2011-11-18 55 views
1

我在我的應用程序中有一個GirdView表。我有一個刪除鏈接按鈕和我的第一列中的複選框。下面是快照:ASP.NET通過複選框模板刪除多個GridView行

enter image description hereenter image description here

我可以手動點擊刪除每行鏈接按鈕刪除每一行。

但是,我想啓用複選框刪除多行。

下面是我爲我的刪除鏈接按鈕代碼:

LinkButton lnk = (LinkButton)sender; 
     string stid = lnk.CommandArgument.ToString(); 
     SqlConnection conn = new SqlConnection("Data Source=DATASOURCE"); 
     string sql = string.Format("DELETE FROM [UserDB] where Employee like '%{0}%'",stid); 
     SqlCommand cmd = new SqlCommand(sql,conn); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 

下面是我的代碼當前刪除選中按鈕:

bool atLeastOneRowDeleted = false; 
     foreach (GridViewRow row in GridView1.Rows) 
     { 
      // Access the CheckBox 
      CheckBox cb = (CheckBox)row.FindControl("UserSelection"); 
      if (cb != null && cb.Checked) 
      { 
       atLeastOneRowDeleted = true; 
       // How do I get the value from my Employee column? 
       string userID = ???; 


      SqlConnection conn = new SqlConnection("Data Source=DATASOURCE"); 
      string sql = string.Format("DELETE FROM [UserDB] where Employee like '%{0}%'",userID); 
      SqlCommand cmd = new SqlCommand(sql,conn); 
      conn.Open(); 
      cmd.ExecuteNonQuery(); 
      } 
     } 

我想知道應該如何我grep的userID,這是在GridView的Employee鍵,到INSERT它到我的SQL刪除語句?

回答

1

我想你想

bool atLeastOneRowDeleted = false; 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
     // Access the CheckBox 
     CheckBox cb = (CheckBox)row.FindControl("UserSelection"); 
     if (cb != null && cb.Checked) 
     { 
      atLeastOneRowDeleted = true; 
      //assuming you have the ID column after the controls 
      string CusId = (row.Cells[3].Text); 


     SqlConnection conn = new SqlConnection("Data Source=DATASOURCE"); 
     string sql = string.Format("DELETE FROM [UserDB] where Employee like '%{0}%'",userID); 
     SqlCommand cmd = new SqlCommand(sql,conn); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     } 
    } 
+0

CBRRacer賽車有你會得到鑰匙,然後做一個刪除的好點。否則,你會吹出很多沒有用的sql。它永遠不會縮放。 –

1

良好,沒有看到你的代碼的複選框,我想說的複選框的值設置爲僱員的用戶名。然後在提交時將選中的值設置爲列表或數組,然後使用刪除單個方法解析該列表或數組。

0

使用'row.Cells [3] .Text'來獲取列值是一種不好的方法。如果他在中間添加了另一列,那麼索引將會改變。改用dataKeys來引用你的列值。

0

這個問題已經得到解答,但是這裏有一篇文章展示了使用datbase,Gridview,Business Logic和DAL的整個流程。

決賽前瞻看起來像這樣

enter image description here

你可以找到完整的源代碼here