2013-08-28 29 views
-1

嗨,我有這個問題關於我的GridView的複選框,在勾選複選框時,應重新分配所有檢查行,重新分配按鈕被點擊。但它只是重新分配檢查的第一個項目,似乎它沒有循環通過gridview。能否請你幫我鑑定什麼在我的代碼錯誤或丟失:如何通過GridView中的複選框值循環

protected void Reassign_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow row in ParticularWorkGridView.Rows) 
     { 
      CheckBox _checkBox = (CheckBox)row.FindControl("ReassignCheckBox"); 
      Label _RecordNumberLabel = (Label)row.FindControl("NumberLabel"); 

      if (_checkBox != null && 
       _checkBox.Checked == true) 
      { 
       SqlConnection con = new SqlConnection(GetConnectionString()); 
       SqlCommand cmd = new SqlCommand("[Reassig]", con); 
       cmd.CommandType = CommandType.StoredProcedure; 

       string MemberID = DropDrownList.SelectedValue; 

       cmd.Parameters.AddWithValue("number", _NumberLabel.Text); 
       cmd.Parameters.AddWithValue("@MemberID", MemberID); 

       if (con.State == ConnectionState.Closed) 
       { 
        con.Open(); 
       } 

       cmd.ExecuteNonQuery(); 
       con.Close(); 
       cmd.Dispose(); 
       Response.Redirect("ParticularWork.aspx"); 
      } 
     } 
    } 

感謝

回答

0

刪除

Response.Redirect("ReassignpParticularWork.aspx"); 

外 「被選中」 狀態。

您遠離,在第一次檢查,而不是保持迭代直通其餘的xD

+0

大聲笑..謝謝Rockster ..我真的沒有看到..它現在工作好:) – NewbieDeveloper

2

您應該只通過數據行被循環。

if (row.RowType = DataControlRowType.DataRow) { /* your code */ } 

看看DataControlRowType枚舉看到不同的類型,它會有道理。

此外,我強烈建議在您的ADO.NET類中使用using塊(SqlConnection,SqlCommand)。這樣,您不需要撥打.Close().Dispose();它會自動處理,並且你的代碼看起來更乾淨。

+0

不必擔心如果cmd.ExecuteNonQuery(); thows一個執行和離開連接打開 –

相關問題