小僞代碼內提供一些背景:佔位一個UpdatePanel
- 我有一個ASPX使用佔位符和一個按鈕
- 當點擊了按鈕它增加了一個web用戶控件(UC1)至我的佔位符
- 在UC有一個按鈕
- 點擊時它增加了一個不同的用戶控件(UC2)到佔位符
單步執行代碼,如果我在#4按鈕單擊之前和之後查看placeholder.controls.count,則計數會增加1,如您所期望的那樣。
問題是在#4中添加的uc2沒有出現在屏幕上。所以,我在UpdatePanel中包裝了佔位符。我以前從未使用過。所以,我可以在添加uc2之後刷新佔位符。
相關ASPX代碼
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server></ajaxToolkit:ToolkitScriptManager>
<ajaxToolkit:TabContainer ID="tcNavigation" runat="server" ActiveTabIndex="0">
<ajaxToolkit:TabPanel ID="tpWebMerchandising" runat="server" HeaderText="WEB">
<ContentTemplate>
<table cellpadding="3" cellspacing="0" border="0">
<tr>
<td valign="top" class="label">Attributes</td>
<td>
<asp:UpdatePanel runat="server" id="UpdatePanel1" updatemode="Conditional">
<ContentTemplate>
<asp:PlaceHolder ID="phAttributes" runat="server"></asp:PlaceHolder><br />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnAddAttribute" runat="server" Text="Add Attribute" /> | <asp:Button ID="btnCreateAttribute" runat="server" Text="Create Attribute" />
</td>
</tr>
</table>
</ContentTemplate>
</ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>
相關ASCX代碼
For Each ctrl As Control In Parent.Page.Controls
For Each ctrl2 As Control In ctrl.Controls
For Each ctrl3 As Control In ctrl2.Controls
For Each ctrl4 As Control In ctrl3.Controls
For Each ctrl5 As Control In ctrl4.Controls
If InStr(ctrl5.GetType.ToString(), "UpdatePanel") > 0 Then 'UPDATE PANEL
up = ctrl5
End If
For Each ctrl6 As Control In ctrl5.Controls 'CONTENT TEMPLATE
For Each ctrl7 As Control In ctrl6.Controls 'PLACE HOLDER
If ctrl7.GetType.ToString() = "System.Web.UI.WebControls.PlaceHolder" Then
phAttributes = ctrl7
End If
Next
Next
Next
Next
Next
Next
Next
Dim ctrlAttributes As New AttributeControl
ctrlAttributes.AttributeName = attrName
ctrlAttributes.AttributeValue = attrValue
ctrlAttributes.ID = "ctrlAttribute-" & attrName
phAttributes.Controls.Add(ctrlAttributes)
我想這...
up.Update()
這...
Me.Page.RegisterStartupScript("AutoPostBackScript", "__doPostBack('UpdatePanel1', '');")
目標是刷新佔位符,以便新的ctrlAttributes顯示在屏幕上。
這段代碼太糟糕了,原因很多,它讓我感到不安。你知道你可以使用Me.phAttributes和Me.UpdatePanel1來獲取控件,而不是所有的For循環? – batwad 2010-11-10 16:53:41