我想处理动态创建的链接按钮的点击事件。
但是我没有得到它的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上获得智慧:
修改
c#中的答案也可以帮助我。
答案 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
}