处理动态生成表的链接按钮事件?

时间:2013-12-12 12:24:43

标签: c# asp.net .net vb.net

我想处理动态创建的链接按钮的点击事件。

但是我没有得到它的btn.click。

我有以下代码:

Public Sub test()
        Dim row As New HtmlTableRow()
        Dim cell As New HtmlTableCell()


        For i = 0 To 10
            row = New HtmlTableRow()
            For j = 0 To 3
                cell = New HtmlTableCell()
                cell.InnerText = "m"
                Dim btn1 As New LinkButton
                btn1.ID = i

                cell.Controls.Add(btn1)
                row.Cells.Add(cell)
            Next
            tableContent.Rows.Add(row)
        Next
    End Sub

C#代码:

public void test()
{
    HtmlTableRow row = new HtmlTableRow();
    HtmlTableCell cell = new HtmlTableCell();


    for (i = 0; i <= 10; i++) {
        row = new HtmlTableRow();
        for (j = 0; j <= 3; j++) {
            cell = new HtmlTableCell();
            cell.InnerText = "m";
            LinkButton btn1 = new LinkButton();
            btn1.ID = i;

            cell.Controls.Add(btn1);
            row.Cells.Add(cell);
        }
        tableContent.Rows.Add(row);
    }
}

没有在btn1.click上获得智慧:

enter image description here

修改

enter image description here

c#中的答案也可以帮助我。

3 个答案:

答案 0 :(得分:4)

在C#中你可以这样做:
1.声明处理程序

protected void btn1_Click(object sender, EventArgs e)
{

}

2。分配处理程序:

LinkButton btn1 = new LinkButton();
btn1.Click += new EventHandler(btn1_Click);

答案 1 :(得分:4)

对于VB.NET,键入AddHandler btn1.然后您应该在Intellisense中看到Click事件,如下所示:

AddHandler btn1.Click, AddressOf Me.LinkButton_OnClick

由于您有动态内容(表),因此您需要在每个页面加载时重建表,而不仅仅是第一个。原因是Page_Load发生在链接按钮单击事件之前,所以当click事件发生时,表需要重新创建;否则,您的点击事件处理程序将尝试与不存在的内容进行交互。


阅读ASP.NET Page Life Cycle Overview,了解有关页面生命周期以及所有事件及其顺序的更多信息。

答案 2 :(得分:3)

您必须在底部添加事件处理程序和ID才能识别它:

public void test()
{
    HtmlTableRow row = new HtmlTableRow();
    HtmlTableCell cell = new HtmlTableCell();


    for (i = 0; i <= 10; i++) {
        row = new HtmlTableRow();
        for (j = 0; j <= 3; j++) {
            cell = new HtmlTableCell();
            cell.InnerText = "m";
            LinkButton btn1 = new LinkButton();
            btn1.ID = i;

            // Add EventHandler for click events
            btn1.Click += new EventHandler(LinkButton_OnClick);

            cell.Controls.Add(btn1);
            row.Cells.Add(cell);
        }
        tableContent.Rows.Add(row);
    }
}

然后将以下方法添加到捕获点击事件的代码中:

 protected LinkButton_OnClick(object sender, EventArgs e)
 {
     var button = (LinkButton)sender;
     // You can now access the id of the clicked link-button using button.ID
 }