2017-04-05 2 views
1

Ich versuche, eine neue Zeile in einer Objekttabelle eine Schaltfläche geklickt wird, jedes Mal hinzuzufügen, aber wenn ich auf die Schaltfläche klicken, um es bearbeitet nur und überschreiben die gleiche ZeileFügen Sie Zeilen in einer Tabelle in Visual Studio C#

protected void btAgregaT_Click(object sender, EventArgs e) 
{ 
    TableRow t = new TableRow(); 

    TableCell c = new TableCell(); 
    c.Text = DDLArticulos.SelectedItem.ToString(); 
    t.Cells.Add(c); 

    TableCell c2 = new TableCell(); 
    c2.Text = TBCantidad.Text; 
    t.Cells.Add(c2); 

    tablaPed.Rows.Add(t);  

} 

+1

, was die Art der 'tablaPed' ist, dass' 'DataTable' –

+0

tablaPed.Rows.Add (DDLArticulos.SelectedItem.ToString(), TBCantidad.Text);' – Damith

Antwort

0

Sie können eine neue Zeile hinzufügen, wie diese Datentabelle:

var newRow = tablaPed.NewRow(); 
newRow["Column1"] = "Value1"; 
newRow["Column3"] = "Value2"; 
newRow["Column3"] = "Value3"; 
tablaPed.Rows.Add(newRow); 
0

Update 2: Grundsätzlich müssen Sie Ansichten verwenden Tate, um alles zu verwalten. Im Folgenden habe ich erwähnt, dass Sie in einfachen Worten Datensätze aus ViewState hinzufügen, bearbeiten, löschen und an Gridview binden.

protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      //Adding data to datatable 
      DataRow t = tablaPed.NewRow(); 

      //adding data to row 
      t["SrNo"] = "1"; 
      t["EmailId"] = "[email protected]"; 
      t["Password"] = "Password"; 

      //adding row to table 
      tablaPed.Rows.Add(t); 

      //saving databale into viewstate 
      ViewState["UserDetail"] = t; 

      //bind Gridview 
      GridView1.DataSource = t; 
      GridView1.DataBind(); 
     } 
    } 

Unterhalb der der funtion zu rufen, wenn Add-Schaltfläche geklickt wird:

private void AddNewRecordRowToGrid() 
    { 
     // check view state is not null 
     if (ViewState["UserDetail"] != null) 
     { 
      //get datatable from view state 
      DataTable dtCurrentTable = (DataTable)ViewState["UserDetail"]; 
      DataRow drCurrentRow = null; 

      if (dtCurrentTable.Rows.Count > 0) 
      { 
       //this will add previously added entries 
       for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
       { 

        //add each row into data table 
        drCurrentRow = dtCurrentTable.NewRow(); 
        //you can add data from textbox or other user control 
        drCurrentRow["SrNo"] = "2"; 
        drCurrentRow["EmailId"] = "[email protected]"; 
        drCurrentRow["Password"] = "Password"; 

       } 
       //Remove initial blank row 
       if (dtCurrentTable.Rows[0][0].ToString() == "") 
       { 
        dtCurrentTable.Rows[0].Delete(); 
        dtCurrentTable.AcceptChanges(); 

       } 

       //add created Rows into dataTable 
       dtCurrentTable.Rows.Add(drCurrentRow); 
       //Save Data table into view state after creating each row 
       ViewState["UserDetail"] = dtCurrentTable; 
       //Bind Gridview with latest Row 
       GridView1.DataSource = dtCurrentTable; 
       GridView1.DataBind(); 
      } 
     } 
    } 

protected void btAgregaT_Click(object sender, EventArgs e) 
{ 
    AddNewRecordRowToGrid(); 
} 

Ich hoffe, es hilft Ihnen zu verstehen :)


Anbetracht tablaPed als globalen Datatable Objekt. Beispiel unten ist der normale Weg Zeile zu einer Tabelle hinzuzufügen:

//creating the table if you already have it then no need to add it. 
DataTable dt = new DataTable(); 
//Defining the table structure. If you already have defined DataTable you dont need to define it either. 
dt.Columns.Add("SrNo"); 
dt.Columns.Add("EmailId"); 
dt.Columns.Add("Password"); 

//Creating a object of DataRow using object of desired table (Basically cloning a row) 
DataRow drNew = dt.NewRow(); 
//Adding data to each row 
drNew["SrNo"] = "1"; 
drNew["EmailId"] = "[email protected]"; 
drNew["Password"] = "Password"; 

//adding this newly added row our table 
dt.Rows.Add(drNew); 

In Ihrem Fall:

protected void btAgregaT_Click(object sender, EventArgs e) 
{ 
    //cloning the table row 
    DataRow t = tablaPed.NewRow(); 

    //adding data to row 
    t["SrNo"] = "1"; 
    t["EmailId"] = "[email protected]"; 
    t["Password"] = "Password"; 

    //adding row to table 
    tablaPed.Rows.Add(t);  

} 
+0

Hallo, vielen Dank für Ihre Hilfe, aber das Problem ist, Wenn ich auf die Schaltfläche klicke (auf einer Webseite), fügt sie nur eine Zeile hinzu und überschreibt sie jedes Mal, wenn ich auf die Schaltfläche klicke. –

+0

Perfekt, was ist der Unterschied zwischen ViewState und Session? Kann ich es auch benutzen? –

+0

Sicher, Daten, die in der Sitzungsvariablen gespeichert sind, behalten die gesamte Benutzersitzung bei, während Viewstate nur für diese Seite bestehen bleibt :). Wenn ich hilfreich war, vergessen Sie nicht zu wählen. –

0

Die Aufgabe der DataRow nicht neu sein müssen, sollte es auf die Datentabelle beziehen sein die Du hast schon global.

protected void btAgregaT_Click(object sender, EventArgs e) 
{ 
    TableRow t = tablaPed.TableRow(); 

    TableCell c = new TableCell(); 
    c.Text = DDLArticulos.SelectedItem.ToString(); 
    t.Cells.Add(c); 

    TableCell c2 = new TableCell(); 
    c2.Text = TBCantidad.Text; 
    t.Cells.Add(c2); 

    tablaPed.Rows.Add(t); 
} 

Überprüfen Sie auch Ihren Code, wenn es eine refresh() oder clear() ist Methode für die Datatable, bevor das Hinzufügen neuer Elemente genannt zu werden. Wenn Sie etwas finden, kommentieren Sie es und versuchen Sie es mit der Ausführung.

Verwandte Themen