2012-02-29 3 views
1

私は顧客とセールスマンを持つPerson Tableを持っています。各顧客はParentIDによってセールスマンに割り当てられます。つまり、得意先親IDは営業担当者の個人IDです。 IndividualIDが主キーです。私はIndividualIDとParentIDを受け取るストアドProcを書いた。 2つのデータグリッドをループする必要があります。どちらもチェックボックスがあり、選択した顧客を選択したセールスマンに割り当てます。 (基本的には、選択した顧客は新しいParentIDがセールスマンのIndividualIDに選ばれました) Anywya、1つのボタンクリックイベントで2つのデータグリッドをループし、ParentIDとIndividualIDを取得しようとしています。しかし、私は2番目のforeachループで私の変数の下にうねりのある線を描きます。ここに私のコードです:1つのボタンクリックイベントで2つのデータグリッドビューをループして更新を実行できますか?

protected void imgbtnReassgin_Click(object sender, ImageClickEventArgs e) 
{ 
    //loop 1st gv 

    foreach (GridViewRow row in gvCustomer.Rows) 
    { 
     CheckBox cb = (CheckBox)row.FindControl("chkitemSelectorCustomers"); 
     if (cb != null && cb.Checked) 
     { 
      GridViewRow r = gvCustomer.SelectedRow; 
      int oldParentID = Convert.ToInt32(r.Cells[2]); 
      int oIndividualID = Convert.ToInt32(r.Cells[0]); 
     } 
    }  // loop 2nd gv 
    foreach (GridViewRow row in gvSalesman.Rows) 
    { 
     CheckBox chkBox =  (CheckBox)row.FindControl("chkitemSelectorAllManagersandSalesman"); 
     if (chkBox != null && chkBox.Checked) 
     { 
      GridViewRow ro = gvReassignCustomers.SelectedRow; 
      int oNewParentID = Convert.ToInt32(ro.Cells[1]); 

      // Assign old ParentID to Salesmans ID// 
      oNewParentID = oldParentID; 

      // Call stored proc Update Customer with New ParentID// 

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

答えて

1

oldParentIDoIndividualID変数が最初のforeach内で宣言し、その範囲は、最初のforeachの内部にあるため、許可されていない2つ目にアクセスされます。

foreachループの外で宣言してください。コードはコンパイルされますが、私はあなたのアップデートを解決するかどうかはわかりません。

+0

ありがとうございます。私はそれらを動かす。コードがコンパイルされますが、このエラーが発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていません。 int oldParentID = Convert.ToInt32(r.Cells [3]);この行に次の行を追加します。 –

+0

SelectedRowはnullになります。 Cells [i]で再生する代わりに、隠しフィールドを追加し、そのIDにIDを格納するか、GridViewのDataKeysプロパティを使用することをお勧めします。 –

1

2番目のネストされたループで同じ変数名を使用していますGridViewRow rowネストされたループがある場合、同じ変数名を持つことはできません。

+0

私は理解しますが、それは何らかの理由で私にエラーを与えていません。 –

関連する問題