2012-12-02 13 views
5

Używam asp.net [C#] ..Jak dodać nowy wiersz tabeli programu ASP.NET, klikając przycisk?

Moje pytanie dotyczy dodania nowego wiersza; jeśli kliknę na ten przycisk (jak za każdym razem, gdy kliknę na ten przycisk, doda nowy wiersz). Myślałem, że łatwo to zrobić .. ale go nie ma. Coś czego brakuje Nie wiem co.

Mój kod jest [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> 

i dla mojego 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); 


} 

nie wiem w czym jest problem .. Podaję nawet wszystkie identyfikatory i próbowałem innych sposobów, ale nie działałem ..

Proszę, jeśli ktoś może mi pomóc. Czuję, że brakuje mi czegoś ważnego, ale nie wiem, co to jest ..

Odpowiedz

2

Jak podano w pytaniu udostępnionego w Walid's answer, wykonaj następujące kroki:

  1. Tworzenie globalną listę wierszy tabeli, coś jak:

    List<TableRow> TableRows 
    
  2. W kliknij przycisk Dodaj nowo utworzony rząd do listy:

    TableRow row1=new TableRow(); 
    TableRows.add(row1); 
    
  3. W metodzie OnInit wystarczy dodać wszystkie wiersze z tabeli:

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

To rozwiąże problem.

+0

thx dużo mojego przyjaciela .. to pomogło mi na prawdziwe .. – NewStudent

+0

Uzyskiwanie instrukcji foreach błędu nie może działać na zmiennej typu tabela, ponieważ tabela nie zawiera publicznej definicji dla getNumerator. –

0

można dodać tylko za pomocą wiersza:

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

Ale problemem jest:

  1. Kliknięto Buttona, wiersz jest dodawany do stołu.
  2. Kliknięcie tego samego przycisku ponownie, a następnie pierwszy wiersz, który już utworzyłeś, przestaje istnieć, ponieważ ASP.NET jest bezstanowy.

Rozwiązanie: Upewnij się, że przy każdym kliknięciu przycisku istnieją już utworzone dane wierszy.

Powiązane problemy