2017-03-22 23 views
0

我有Gridview充滿了數據,我需要當一些行被選中時,我可以按下按鈕並相應地更改數據,我可以做到這一點,當所有的行被檢查,但我找不到一種連接我的查詢與一行或多行的id的方法。Gridview行ID

protected void UsedForButton_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow row in GridView1.Rows) 
     { 
      var chk = row.FindControl("InStockCbx") as CheckBox; 
      if (chk.Checked) 
      { 
       //using (WorkDBEntities db = new WorkDBEntities()) 
       //{ 

       // WorkTable table = new WorkTable(); 
       // table.InStock = 0; 

       // db.WorkTables.Add(table); 
       // db.SaveChanges();  
       //} 
       string query = "UPDATE WorkTable SET InStock = 0 WHERE Id = " ???; 

       SqlCommand comm = new SqlCommand(query, conn); 
       conn.Open(); 
       comm.ExecuteNonQuery(); 
       conn.Close(); 
      } 
+0

你可以添加ASPX部分。所以我很容易理解。需要更多細節 – Rajan

回答

0

@Nemanja,你想獲得每個記錄的ID然後只有你將能夠更新基於ID。記錄到電網的第一綁定標識,並試圖讓ID按鈕點擊事件

0

試試這個:

protected void UsedForButton_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
     CheckBox checkbox1 = (CheckBox)row.FindControl("InStockCbx"); 
     if (checkbox1.Checked) 
     { 
      int id = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value.ToString());   
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString); 
      SqlCommand cmd = new SqlCommand ("UPDATE WorkTable SET InStock = 0 WHERE Id = @Id"", con); 
      cmd.CommandType = CommandType.Text; 
      cmd.Parameters.Add("@Id", SqlDbType.Int).Value = id; 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
      cmd.Dispose(); 
     } 
    } 
} 

注:您需要在您的.aspx模板指定數據鍵喜歡這裏:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="id" ...>