我需要在asp.net中为表中的每一行创建一个按钮。 我循环了我的datareader并手动创建了一个"输入"按钮。问题是,当我点击页面中的按钮时,它不会调用事件(btnLogin_ServerClick)。
我如何解决?
抱歉我的英语不好..我通过以下代码: int tmp = 0;
while (dr.Read())
{
myTable += "<tr>";
for(int i = 0; i <= 7; i++)
{
myTable += "<td>";
myTable += dr[i].ToString();
myTable += "</td>";
}
myTable += "<td>";
myTable += "<input class=\"btn btn-primary btn-lg outline\" type=\"button\" runat=\"server\" value=\"More\" name=\"btn" + tmp + "\" id=\"btnLogin" + tmp+ "\" onserverclick=\"btnLogin_ServerClick\" usesubmitbehavior=\"false\" />";
myTable += "</td>";
myTable += "</tr>";
tmp++;
}
//--------------------
//create dynamic table
//--------------------
server_badge.InnerText = tmp + "";
servers_table.InnerHtml = myTable;
}
protected void btnLogin_ServerClick(object sender, EventArgs e)
{
Response.Write("test");
}
答案 0 :(得分:2)
你不能。
使用Button
类,而不是添加HTML代码段。您将获得完全相同的HTML结果,但在代码隐藏中您使用的是实际对象,而不是字符串:
Button b = new Button();
b.CssClass = "btn btn-primary";
// and so on ...
Button
类具有您可能想要配置的每个可以想象的HTML属性的属性。你会发现很多成员,只是忽略那些听起来很古怪的人并坚持那些听起来像你需要的人(CssClass
,Click
,OnClientClick
等等。一旦分配了所需的所有内容(在HTML中),您最终可以附加一个事件监听器:
b.Click += new EventHandler(btnLogin_ServerClick);
^ press <TAB> here
当您在<TAB>
之后按+=
并将其包装到正确的事件处理程序对象中时,Visual Studio将生成处理程序方法。