asp.NET动态按钮服务器端事件无法工作

时间:2016-04-16 12:33:17

标签: c# asp.net button

我需要在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");
}

1 个答案:

答案 0 :(得分:2)

你不能。

使用Button类,而不是添加HTML代码段。您将获得完全相同的HTML结果,但在代码隐藏中您使用的是实际对象,而不是字符串:

Button b = new Button();
b.CssClass = "btn btn-primary";
// and so on ...

Button类具有您可能想要配置的每个可以想象的HTML属性的属性。你会发现很多成员,只是忽略那些听起来很古怪的人并坚持那些听起来像你需要的人(CssClassClickOnClientClick等等。一旦分配了所需的所有内容(在HTML中),您最终可以附加一个事件监听器:

b.Click += new EventHandler(btnLogin_ServerClick);
          ^ press <TAB> here

当您在<TAB>之后按+=并将其包装到正确的事件处理程序对象中时,Visual Studio将生成处理程序方法。