2012-12-02 20 views
5

Sto usando asp.net [C#] ..Come aggiungere una nuova riga della tabella ASP.NET facendo clic sul pulsante?

La mia domanda riguarda l'aggiunta di nuove righe; se clicco su quel pulsante (come ogni volta che clicco su quel bottone aggiungerò una nuova riga) .. Ho pensato che sia facile farlo ... ma non è lì. Manca qualcosa, non so cosa.

mio codice è [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> 

e per la mia 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); 


} 

Non so quale sia il problema .. Ho anche dato ad ogni controllo un ID .. e ho provato altri modi ma non ha funzionato ..

Per favore se qualcuno mi può aiutare .. Mi sento come se manchi qualcosa di importante ma non so cosa sia ..

risposta

2

Come indicato nella domanda condiviso in Walid's answer, attenersi alla seguente procedura:

  1. Creare un elenco globale di righe della tabella, qualcosa di simile a:

    List<TableRow> TableRows 
    
  2. In fare clic sul pulsante Aggiungi riga appena creato per elencare:

    TableRow row1=new TableRow(); 
    TableRows.add(row1); 
    
  3. Nel metodo OnInit sufficiente aggiungere tutte le righe alla tabella:

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

Sarà risolvere il problema.

+0

thx un mio amico .. che mi ha aiutato per davvero .. – NewStudent

+0

Ottenere errore - l'istruzione foreach non può operare sulla variabile della tabella dei tipi perché la tabella non contiene la definizione pubblica per getNumerator. –

2

È necessario mantenere lo stato del controllo (tabella).

Vedere una spiegazione chiara di un problema molto simile qui ASP.NET dynamically created controls and Postback

+0

può essere semplice per me .. non ho capito niente di tutto questo ... [se non ti dispiace] che male fare per far funzionare il mio esempio giusto? – NewStudent

0

È possibile aggiungere fila semplicemente utilizzando:

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

Ma la preoccupazione è:

  1. cliccato sul pulsante, viene aggiunta una riga alla tabella.
  2. Cliccato sullo stesso pulsante, la prima riga che hai già creato non persiste più come ASP.NET è stateless.

Soluzione: verificare che a ogni clic del pulsante siano presenti i dati delle righe già creati.

Problemi correlati