[英]Register control after page initialized ASP.NET AJAX
我想將用戶控件以遞增方式和動態方式添加到已使用AJAX而不是回發加載的頁面中。 我的問題是在用戶單擊頁面上的按鈕后加載了控件。 如果只單擊一次,一切都很好。 但是,如果再次單擊該按鈕,則第一個控件將被刪除。 經過大量研究,我相信這是因為第一個控件在初始化時未在頁面中注冊。
頁面加載和初始化后,是否可以通過該方法向頁面注冊控件?
您必須使用與以前相同的ID在回發中重新創建動態創建的控件。 因此,您需要存儲已經創建的控件的數量,一個合適的位置是ViewState。 順便說一句,這與不使用AJAX時相同。
例如:
aspx :
<asp:Button type="button" id="BtnAddButton" runat="server" Text="Add Button" />
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<asp:Panel ID="ButtonPanel" runat="server"></asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BtnAddButton" />
</Triggers>
</asp:UpdatePanel>
代碼隱藏 :
Public Property ButtonCount As Int32
Get
Dim VS_ButtonCount = ViewState("ButtonCount")
If VS_ButtonCount Is Nothing Then
ViewState("ButtonCount") = 0
End If
Return DirectCast(ViewState("ButtonCount"), Int32)
End Get
Set(ByVal value As Int32)
ViewState("ButtonCount") = value
End Set
End Property
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For i As Int32 = 1 To Me.ButtonCount
Dim btn As New Button
btn.ID = "Button_" & i
btn.Text = btn.ID
AddHandler btn.Click, AddressOf ButtonClick
Me.ButtonPanel.Controls.Add(btn)
Next
End Sub
Private Sub ButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Dim btn = DirectCast(sender, Button)
End Sub
Protected Sub BtnAddButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnAddButton.Click
Me.ButtonCount += 1
Dim btn As New Button
btn.ID = "Button_" & ButtonCount
btn.Text = btn.ID
AddHandler btn.Click, AddressOf ButtonClick
Me.ButtonPanel.Controls.Add(btn)
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.