动态生成的Linkbutton不会触发Onclick事件VB.Net

时间:2015-04-30 02:25:45

标签: asp.net vb.net webforms linkbutton

我已经按照一些说明在运行时使用事件触发器创建了一个新的LinkBut​​ton,并为生成的LinkBut​​ton添加了一个事件处理程序。我不知道为什么新的LinkBut​​ton不会触发添加到它的事件。任何人请指导/纠正我。

这就是我现在所拥有的。

ASPX:

<form id="myForm" runat="server">
 <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">

 <ContentTemplate>

 <table class="mel-table" style="text-align: center" runat="server" id="mytab1">

    <tbody>
        <tr>
            <td>Case Number :</td>

            <td>
            <asp:TextBox ID="caseNumber" runat="server"></asp:TextBox>
            </td>

        </tr>

    </tbody>
  </table>

   <asp:Button OnClick="btnOK1_Click" ID="btnOK1" runat="server" Text="Save" />

  </ContentTemplate>

  </asp:UpdatePanel>
 </form>

ASPX.VB:

Protected Overloads Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Session("tablecontent") IsNot Nothing Then
        mytab1 = CType(Session("tablecontent"), HtmlTable)
    End If
End Sub

Public Function checking() As Boolean

        Dim caseNo As Double
            Try
                caseNo = Convert.ToDouble((caseNumber.Text).Trim())
            Catch ex As Exception
            caseNo = 0
            End Try

        Dim r As New HtmlTableRow
        Dim c0 As New HtmlTableCell
        r.Cells.Add(c0)

        Dim but As New LinkButton
        but.ID = caseNo 
        but.Text = caseNo.ToString() 
        AddHandler but.Click, AddressOf LinkButton1_Click
        c0.Controls.Add(but)

        mytab1.Rows.Add(r)
        Session("tablecontent") = mytab1
        Return True
End Function

Protected Sub LinkButton1_Click(sender As Object, e As EventArgs)

    'My Code here

End Sub

Protected Sub btnOK1_Click(sender As Object, e As EventArgs)

    If (checking()) Then

        ScriptManager.RegisterStartupScript(Page, Page.GetType, "Alert", "<script type='text/javascript'>alert('Success');</script>", False)

    End If

End Sub

2 个答案:

答案 0 :(得分:4)

单击“保存”按钮时,将数据保存在本地存储或数据库中,然后尝试再次加载页面以使用存储中的内容填充页面。在这种情况下,您可以在页面上显示内容,因此,您也可以使用这些事件。

答案 1 :(得分:1)

每当您创建动态控件时,都必须在回发时重新加载它。我正在使用方法调用ReloadRows()来重新加载我在ViewState中保存的已添加的案例:

if numdict1: