2016-04-16 53 views
0

我需要爲我的表中的每一行在asp.NET中做一個按鈕。 我循環了我的datareader並手動創建一個「輸入」按鈕。問題是,當我點擊頁面中的按鈕時,它不會調用事件(btnLogin_ServerClick)。asp.NET動態按鈕服務器端事件不工作

我該如何解決?

對不起我的英文不好。我過去的代碼如下:

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

你不能。

而不是添加HTML片段使用Button類。您將獲得完全相同的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 

Visual Studio將在您的+=後按<TAB>生成處理程序方法,並將其包裝成一個適當的事件處理程序

相關問題