2012-12-02 39 views
5

Tôi đang sử dụng asp.net [C#] ..Làm thế nào để thêm hàng bảng ASP.NET mới bằng cách nhấn vào nút?

Câu hỏi của tôi là thêm hàng mới; nếu tôi nhấp vào nút đó (như mỗi khi tôi nhấp vào nút đó, nó sẽ thêm hàng mới) .. Tôi nghĩ rằng nó dễ dàng để làm điều đó .. nhưng nó không có ở đó. Một cái gì đó là mất tích Tôi không biết những gì.

Mã của tôi là [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> 

và cho tôi 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); 


} 

Tôi không biết vấn đề là gì .. Tôi thậm chí cung cấp cho mỗi kiểm soát một ID .. và tôi đã thử những cách khác nhưng không làm việc ..

Xin vui lòng nếu có ai có thể giúp tôi .. Tôi cảm thấy như thiếu một cái gì đó quan trọng nhưng tôi không biết nó là gì ..

Trả lời

2

Như được đưa ra trong câu hỏi được chia sẻ trong Walid's answer, hãy làm theo các bước sau:

  1. Tạo một danh sách toàn cầu của hàng bảng, một cái gì đó như:

    List<TableRow> TableRows 
    
  2. Trong nhấp chuột nút Thêm hàng mới tạo vào danh sách:

    TableRow row1=new TableRow(); 
    TableRows.add(row1); 
    
  3. Trong phương pháp OnInit chỉ cần thêm tất cả các hàng để bảng:

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

Nó sẽ giải quyết vấn đề của bạn.

+0

thx rất nhiều bạn của tôi .. đã giúp tôi cho thực tế .. – NewStudent

+0

Nhận báo cáo lỗi cho phép không thể hoạt động trên biến loại bảng vì bảng không chứa defination công cộng cho getNumerator. –

2

Bạn sẽ cần phải duy trì trạng thái điều khiển của bạn (bảng).

Xem giải thích rõ ràng cho một vấn đề rất giống nhau ở đây ASP.NET dynamically created controls and Postback

+0

u có thể đơn giản cho tôi .. tôi không hiểu bất kỳ điều gì trong số đó .. [nếu bạn không phiền] những gì bị bệnh làm cho ví dụ của tôi hoạt động đúng không? – NewStudent

0

Bạn có thể thêm hàng chỉ bằng cách sử dụng:

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

Nhưng mối quan tâm là:

  1. Clicked trên Button, một hàng được thêm vào bảng.
  2. Nhấp vào cùng một nút một lần nữa sau đó hàng đầu tiên mà bạn đã tạo không còn tồn tại như ASP.NET là không quốc tịch.

Giải pháp: Đảm bảo rằng trên mỗi lần nhấp nút, dữ liệu hàng đã tạo của bạn tồn tại.

Các vấn đề liên quan