2017-04-05 19 views
1

我想每一個按鈕被點擊一次新行添加到對象表,但是當我點擊它只是編輯按鈕,並覆蓋在同一行添加表列在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

是什麼tablaPed'的'類型是'DataTable' –

+0

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

回答

0

您可以添加一個新行數據表是這樣的:

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

更新2: 基本上,你需要使用意見去管理一切。下面我已經提到過,用簡單的話來說,你可以添加,編輯,刪除ViewState中的記錄並將它們綁定到gridview。

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(); 
     } 
    } 

下方的funtion調用添加按鈕被點擊時:

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(); 
} 

我希望它可以幫助你理解:)


考慮tablaPed全球數據表對象。下面 實例是加入行到表的標準方式:

//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); 

你的情況:

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

您好,感謝您的幫助,但問題是當我點擊按鈕(它在網頁中)時,它只添加一行,並且每次點擊按鈕時都會覆蓋它。 –

+0

完美,ViewState和Session之間有什麼區別?我也可以使用它嗎? –

+0

當然,存儲在會話變量中的數據將持續整個用戶會話,而視圖狀態將僅保留該頁面:)。如果我有任何幫助,請不要忘記投票。 –

0

DataRow的對象不能是新的,它應該是指數據表中哪些你已經有全球。

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); 
} 

另外,檢查你的代碼,如果有正在呼籲DataTable中添加新項目之前refresh()clear()方法。如果你確實找到了一些東西,請評論一下,然後嘗試執行。

相關問題