This may even be a bit better example. Watch what happens when you change
the dropdownlist.
<%@ Page Trace=false %>
<%@ import Namespace="System.Net" %>
<html>
<script language="vb" runat="server">
Protected Overrides Function SaveViewState() As Object
Return MyBase.SaveViewState()
End Function
Protected Overrides Sub LoadViewState(savedState As Object)
If Not (savedState Is Nothing) Then
MyBase.LoadViewState(savedState)
Response.write("<br>Viewstate as LoadViewState: " & Viewstate("Test"))
End If
End Sub
Sub Page_Load(sender as object, e as eventargs)
if not ispostback then
viewstate("Test") = "Not Postback"
response.write("<br>Viewstate at New: " & GetMruList())
else
dim strViewState as string = request.form("__Viewstate").tostring()
dim vdata as byte() = Convert.FromBase64String(strViewState)
dim strDecode as string = Encoding.ASCII.GetString(vdata)
response.write("<br>This is the coded viewstate " & strViewstate)
Response.write("<br>This is the decoded viewstate")
response.write(Server.HtmlEncode(strDecode))
end if
getdatactl()
end Sub
Function GetMruList() As String
Dim state As StateBag = ViewState
If state.Count > 0 Then
Dim upperBound As Integer = state.Count
Dim keys(upperBound) As String
Dim values(upperBound) As StateItem
state.Keys.CopyTo(keys, 0)
state.Values.CopyTo(values, 0)
Dim options As New StringBuilder()
Dim i As Integer
For i = 0 To upperBound - 1
options.append(keys(i) & " - " & values(i).value)
'options.AppendFormat("<option {0} value={1}>{2}",IIf(selectedValue
= keys(i), "selected", ""), keys(i), values(i).Value)
Next i
Return options.ToString()
End If
Return ""
End Function 'GetMruList
sub GetDataCtl()
dim i as int32
dim strI as string
dim j as int32 = 10
dim drpCtl as new DropDownList
drpCtl.AutoPostBack="True"
for i = 0 to j
strI = i.tostring()
dim imgCtl as new imagebutton
dim lst as new listitem("hello" + strI, stri)
drpCtl.items.add(lst)
imgctl.imageurl = "/someimage.jpg"
imgctl.id = "img" + strI
imgctl.commandargument = "Hello" & strI
addhandler imgctl.click, addressof ImageButton1_Click
plc1.controls.add(imgctl)
next i
addhandler drpCtl.SelectedIndexChanged, addressof DropList_Change
plc1.controls.add(drpCtl)
End sub
sub ImageButton1_Click(sender as object, e as ImageClickEventArgs)
viewstate("Test") = "Postback"
response.write("<br>ViewState as Click: " & GetMruList())
End sub
Sub DropList_Change(sender as object, e as eventargs)
viewstate("Test") = "Postback"
response.write("<br>ViewState as DropListChange: " & GetMruList())
End Sub
</script>
<body>
<form runat="server">
<asp

laceholder id="plc1" runat="server"/>
</form>
</body>