5

I am using asp.net [ c# ] ..

My question is about adding new row; if I click on that button (like every time I click on that button it will add new row) .. I thought its easy to do it .. but it is not there. Something is missing I don't know what.

My code is [ 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>

and for my 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);


}

I don't know what the problem is .. I even give each controls an IDs .. and I tried other ways but didn't work ..

Please if anyone can help me out .. I feel like am missing something important but I don't know what it is ..

Brian Tompsett - 汤莱恩
  • 5,195
  • 62
  • 50
  • 120
NewStudent
  • 137
  • 1
  • 2
  • 7

3 Answers3

2

You will need to persist the state of your control (table).

See a clear explanation to a very similar problem here ASP.NET dynamically created controls and Postback

Community
  • 1
  • 1
Walid
  • 88
  • 1
  • 5
  • can u simple it for me .. i didn't understand any of it .. [if u don't mind] what ill do to make my example work right ? – NewStudent Dec 03 '12 at 01:49
2

As given in the Question shared in Walid's answer, follow these steps:

  1. Create a global list of table rows, something like:

    List<TableRow> TableRows
    
  2. In button click Add the newly created row to list:

    TableRow row1=new TableRow();
    TableRows.add(row1);
    
  3. In the OnInit method simply add all the rows to the table:

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

It will solve your problem.

Community
  • 1
  • 1
Mohit
  • 415
  • 2
  • 17
  • Getting error- foreach statement can not operate on variable of type table because table does not contain public defination for getNumerator. – Azhar Shahid May 01 '14 at 06:10
0

You can add row just by using:

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

But the concern is:

  1. Clicked on Button, a row is added to table.
  2. Clicked on the same button again then first row which you have already created no longer persists as ASP.NET is Stateless.

Solution: Ensure that on every button click, your already created rows data exists.

Shadow The Vaccinated Wizard
  • 62,584
  • 26
  • 129
  • 194
Pavan Kumar
  • 190
  • 2
  • 8