2012-03-05 4 views
2

현재 DataGrid의 행 (선택란을 통해)에서 DataKey를 가져 와서 INT 변수에 할당하여 databsese의 Individual을 업데이트하는 Button Click 이벤트가 있습니다. 체크 박스를 하나만 선택하고 업데이트를 실행하면 모든 것이 잘 작동합니다. 나는 사용자가 필요하지만 모든 체크 박스를 선택하고 모든 Datakeys을하고 난 단지 1 확인란을 선택하면 evrything 잘 작동 말했듯이 같은 변수gridview에서 복수 행 DataKeys 가져 오기

INT oNewParentID 

에 할당 할 수있는 옵션이 있습니다. 나는 Uknoiwn 금액의 Datakeys 또는 모든 체크 박스가 선택한 모든 DataKeys를 가져와 위의 변수에 저장하여 모든 Individuals Selected에 대한 업데이트를 실행하는 방법을 묻습니다. 여기에 선택 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을 여러 번 선택해야만 마지막으로 선택한 관리자에게 할당 할 이유가 없다고 가정하고 잠시 휴식을 추가했습니다. 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); 
     } 

}