2012-03-05 17 views
2

現在、私はDataGrid内の行から(チェックボックスを介して)DataKeyを取得し、INT変数に代入してdatabse内のIndividualを更新するButton Clickイベントを持っています。私はチェックボックスを1つだけチェックしてアップデートを実行するとすべてうまく動作します。しかし、私はすべてのチェックボックスを選択し、これらすべてのDatakeysを取ると、私は1つのだけチェックボックスを選択するとevrythingが正常に動作言ったように、同じ変数グリッドビューから複数行のデータキーを取得

INT oNewParentID 

に割り当てるためのオプションを持っているユーザーを必要としています。私は、すべてのチェックボックスで選択したすべてのデータキーまたはすべてのデータキーを取得する方法を尋ねており、上記の変数に保存して、選択されたすべての個人の更新を実行するよう求めています。ここで選択した1つのチェックボックスのために働いているこれまでのところ、私のボタンクリックイベントである:

protected void imgbtnReassgin_Click(object sender, ImageClickEventArgs e) 
{ 
    foreach (GridViewRow row in gvSalesmanCustomers.Rows) 
    { 
     CheckBox cb = (CheckBox)row.FindControl("chkSalesCustSelector"); 
     if (cb != null && cb.Checked) 
     { 


      int oIndividualID = Convert.ToInt32((gvSalesmanCustomers.DataKeys[row.RowIndex].Value)); 



      foreach (GridViewRow r in gvSalesmanByManager.Rows) 
      { 
       CheckBox chkBox = (CheckBox)r.FindControl("chkManagerSalesSelector"); 
       if (chkBox != null && chkBox.Checked) 
       { 

        int oNewParentID = Convert.ToInt32((gvSalesmanByManager.DataKeys[r.RowIndex].Value)); 



        Individual ind = new Individual(); 
        ind.ReassignIndividual(oIndividualID, oNewParentID); 

        chkBox.Checked = false; 
        cb.Checked = false; 

       } 


      } 



     } 


    } 

} 

は彼女のは、ストアド・プロシージャ、私の更新です:

CREATE DEFINER=`root`@`%` PROCEDURE `reassign_Individual`(
IN oIndividualID  int(11), 
IN oNewParentID   int(11) 
) 
BEGIN 
Update intelliair.individual 
set ParentID = oNewParentID 
Where IndividualID = oIndividualID;END 

My DataGridViews UI

答えて

0

再編成コード。 最後に選択したマネージャに割り当てようとすると、ReasignInvidualに何度も理由がないと仮定して、2番目のブレークをforeachに追加しました。

protected void imgbtnReassgin_Click(object sender, ImageClickEventArgs e) 
{ 
    List<int> ids = new List<int>(); 
    foreach (GridViewRow row in gvSalesmanCustomers.Rows) 
    { 
     CheckBox cb = (CheckBox)row.FindControl("chkSalesCustSelector"); 
     if (cb != null && cb.Checked) 
     { 
      int oIndividualID = Convert.ToInt32((gvSalesmanCustomers.DataKeys[row.RowIndex].Value)); 
      ids.Add(oIndividualID); 

      cb.Checked = false; 

     } 
    } 

    int oNewParentID = 0; 
    foreach (GridViewRow r in gvSalesmanByManager.Rows) 
    { 
     CheckBox chkBox = (CheckBox)r.FindControl("chkManagerSalesSelector"); 
     if (chkBox != null && chkBox.Checked) 
     { 
      oNewParentID = Convert.ToInt32((gvSalesmanByManager.DataKeys[r.RowIndex].Value)); 
      chkBox.Checked = false; 
      break; //no reason to go with the same logic to next records 
      //if you want to uncheck all the checkboxes continue with specific code just for that purpose 
     } 
    } 


    if (ids.Count > 0 && oNewParentID > 0) 
     foreach(var id in ids) 
     { 
      Individual ind = new Individual(); 
      ind.ReassignIndividual(id, oNewParentID); 
     } 

} 
関連する問題