2012-12-02 138 views
5

我正在使用asp.net [c#] ..如何通過單擊按鈕添加新的ASP.NET表格行?

我的問題是關於添加新行;如果我點擊該按鈕(像我每次該按鈕單擊它會加入新行).. 我想它很容易做到這一點..但它不存在。有些東西缺失我不知道是什麼。

我的代碼爲[Default3.aspx]:

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeFile="Default3.aspx.cs" Inherits="Default3" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div align="center">  

<asp:Table ID="Table1" runat="server"> 
    <asp:TableRow> 
     <asp:TableCell style="border-style:solid" > 
      <asp:Label ID="Label1" runat="server" Text="LABEL = 1 "> 
      </asp:Label> 
     </asp:TableCell> 
     <asp:TableCell style="border-style:solid" > 
      <asp:Label ID="Label2" runat="server" Text="LABEL = 2 "> 
      </asp:Label> 
     </asp:TableCell> 
    </asp:TableRow> 
    <asp:TableRow> 
     <asp:TableCell style="border-style:solid" > 
      <asp:Label ID="Label3" runat="server" Text="LABEL = 3 "> 
      </asp:Label> 
     </asp:TableCell> 
     <asp:TableCell style="border-style:solid" > 
      <asp:Label ID="Label4" runat="server" Text="LABEL = 4 "> 
      </asp:Label> 
     </asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

<asp:Button ID="Button1" runat="server" Text="Add More" 
     onclick="Button1_Click" /> 
</div> 
</form> 

</body> 
</html> 

和我的C#[Default3.aspx.cs]:

protected void Button1_Click(object sender, EventArgs e) 
{ 

    TableRow NewRow1 = new TableRow(); 

    //1st cell 
    TableCell NewCell1 = new TableCell(); 
    NewCell1.Style.Add("border-style","solid"); 

    // new lebel 
    Label newLable1 = new Label(); 
    count = count + 1; // just for change number in label text 
    newLable1.Text = "NewLabel = "+ count; 

    // adding lebel into cell 
    NewCell1.Controls.Add(newLable1); 

    // adding cells to row 
    NewRow1.Cells.Add(NewCell1); 

    //2ed cell 
    TableCell NewCell2 = new TableCell(); 
    NewCell2.Style.Add("border-style", "solid"); 

    Label newLable2 = new Label(); 
    count = count + 1; 
    newLable2.Text = "NewLabel = " + count; 
    NewCell2.Controls.Add(newLable2); 
    NewRow1.Cells.Add(NewCell2); 

    //adding row into table 
    Table1.Rows.Add(NewRow1); 


} 

我不知道是什麼問題..我甚至給每一個控制的ID ..我試過其他的方法,但沒有工作..

請如果有人能幫助我..我覺得我失去了一些東西很重要,但我不知道它是什麼..

回答

2

如在Walid's answer共享的問題給出,請按照下列步驟操作:

  1. 創建錶行的全局列表,是這樣的:

    List<TableRow> TableRows 
    
  2. 在按鈕單擊添加新創建的行列表:

    TableRow row1=new TableRow(); 
    TableRows.add(row1); 
    
  3. OnInit方法只是所有行添加到表:

    foreach (TableRow row in TableRows) 
    { 
        Table1.Rows.Add(row); 
    } 
    

這將解決您的問題。

+0

thx很多我的朋友..這幫助我真正.. – NewStudent

+0

獲取錯誤,foreach語句無法操作類型表的變量,因爲表不包含getNumerator的公共定義。 –

0

您只需通過添加一行:

TableRow row1=new TableRow(); 
TableRows.add(row1); 

但值得關注的是:

  1. 點擊了按鈕,行被添加到表中。
  2. 點擊了同一個按鈕再然後,你已經創建不再作爲持續存在ASP.NET是無狀態的第一行。

解決方案:確保每按一下按鈕,你已經創建的行數據存在。

相關問題