在我的網頁上我加載了一個usercontrol的多個實例,有時候usercontrol是自身內部的。我需要爲帖子的往返行程保存一堆屬性,但我很困惑如何將這些屬性保存到ViewState並將它們再次設置爲usercontrol中的repeater項。關於使用ViewState和動態添加的用戶控件感到困惑
誰能幫助我在這種情況下,我已經閱讀視圖狀態的MSDN,但我不理解它很好出於某種原因
這是我如何加載父用戶控件(子控件加載相同使用相同的用戶控制的方式)
Protected Sub Load_Controls(ByVal list As List(Of BSEvaluationGroup.category), ByVal gid As Integer, ByVal pid As Integer, ByVal fid As Integer)
Dim item As BSEvaluationGroup.category
For Each item In list
Dim ctl As PerformanceEvaluationSubcontractorControl = CType(Page.LoadControl("PerformanceEvaluationSubcontractorControl.ascx"), PerformanceEvaluationSubcontractorControl)
ctl.categoryid = item.catid
ctl.categoryname = item.catname
ctl.projectid = pid
ctl.folderid = fid
ctl.groupid = gid
ctl.parentid = item.parid
ctl.clist = item.categories
ctl.plist = item.points
ctl.parentpage = Me
ctl.EnableViewState = "true"
If (Not subcon Is Nothing AndAlso Not subcon.points Is Nothing) Then
ctl.epnts = subcon.points
End If
AddHandler ctl.BubbleCalculate, AddressOf Me.PostRating
Select Case gid
Case 1
Me.officephld.Controls.Add(ctl)
Dim ohrule As HtmlGenericControl = New HtmlGenericControl("hr")
ohrule.Style.Add("width", "100%")
ohrule.Style.Add("background-color", "Silver")
ohrule.Style.Add("size", "1px")
ohrule.Style.Add("border-width", "0")
ohrule.Style.Add("padding-top", "1px")
ohrule.Style.Add("float", "left")
Me.officephld.Controls.Add(ohrule)
Case 2
Me.sitephld.Controls.Add(ctl)
Dim shrule As HtmlGenericControl = New HtmlGenericControl("hr")
shrule.Style.Add("width", "100%")
shrule.Style.Add("background-color", "Silver")
shrule.Style.Add("size", "1px")
shrule.Style.Add("border-width", "0")
shrule.Style.Add("padding-top", "1px")
shrule.Style.Add("float", "left")
Me.sitephld.Controls.Add(shrule)
End Select
Next
End Sub
向我們展示瞭如何動態地創建你的用戶控件。你不能添加這些屬性作爲你的UserControl中的服務器控件(f.e.TextBox)。這樣這些屬性將自動存儲在ViewState中。否則,你只需手動添加它們:'ViewState(「MyProperty1」)= value' –
我添加了代碼來加載控件。 「ctl.epnts = subcon.points」用於中繼器中加載的AjaxControlToolKit分級控件。 – mattgcon
...你在哪裏調用'Load_Controls'?請記住,即使使用與之前相同的ID進行回發,您也必須重新加載它們。 –