动态文本框在updatepanel中不起作用

时间:2012-03-31 09:47:38

标签: asp.net vb.net asp.net-ajax

我在按钮单击时创建动态文本框,然后在另一个按钮单击时显示值。它工作正常,直到我使用ajax updatepanel。在那种情况下,当我按下第二个按钮时,不显示值。我的aspx代码是:

aspx标记是:

             

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <div id="divRT" runat="server">
        </div>
           <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnAccessValues" EventName="Click" />
    <asp:AsyncPostBackTrigger ControlID="lbnAddNew" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
<div>
    <asp:Button ID="btnAccessValues" Text="save" runat="Server" OnClick="btnAccessValues_Click" />
    <br />
    <br />       
</div>

显示值的代码。

 Protected Sub btnAccessValues_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAccessValues.Click
        If ViewState(strVS_DynamicIds) IsNot Nothing Then
            Dim lstDynId As List(Of String) = DirectCast(ViewState(strVS_DynamicIds), List(Of String))
            For Each strId As String In lstDynId
                Dim tbx As TextBox = DirectCast(divRT.FindControl(strId), TextBox)

                Response.Write(tbx.Text)
                Label1.Text = tbx.Text
            Next
        End If
    End Sub

我使用这篇文章作为参考:

http://www.c-sharpcorner.com/uploadfile/abhijeetsinghai/creating-textboxes-dynamically-at-runtime/

请建议解决方案。

此致 Asif Hameed

2 个答案:

答案 0 :(得分:0)

你必须在每个帖子上重新创建动态添加的控件。 所以要么在Page_Init或Page_Load中重新创建它们。

答案 1 :(得分:0)

当我尝试实现你的场景时,我发现的唯一问题是触发器,所以注释会在你的代码中触发,然后再试一次

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <div id="divRT" runat="server">
        </div>
           <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </ContentTemplate>        
</asp:UpdatePanel>
<div>
    <asp:Button ID="btnAccessValues" Text="save" runat="Server" OnClick="btnAccessValues_Click" />
    <br />
    <br />       
</div>