2014-07-17 138 views
0

我有兩個checkBoxLists,一個叫做CheckBoxList1(3個項目,讓我們稱它們爲A,B和C),另一個是CheckBoxList2(包含2個項目讓我們稱它們爲1和2)。C#嵌套的foreach循環 - CheckBoxList

我將從checkboxlist1和checkboxlist2中選擇的值插入數據庫到兩列,但我遇到了這個問題:當我選擇例如A和B,然後1和2這是得到導入的值到數據庫:

column1 column2 
A  1, 2 
B  1, 2, 1, 2 

我想:

column1 column2 
A  1, 2 
B  1, 2 

這裏是我的嘗試:

using (var command = new SqlCommand(query, conn)) 
{ 
    string Optional = ""; 

    foreach (var item in CheckBoxList1.Items.Cast<ListItem>().Where(item => item.Selected)) 
    { 
     command.Parameters.Clear(); 
     command.Parameters.AddWithValue("@planName", item.Text); 

     foreach (var item1 in CheckBoxList2.Items.Cast<ListItem>().Where(item1 => item1.Selected)) 
     { 
      { 
       Optional = Optional + item1.Text; 
      } 

     } 
     command.Parameters.AddWithValue("@optionPlan", Optional); 
     command.ExecuteNonQuery(); 
    } 
} 

回答

3

進入內環路的可選變量重新設置的String.Empty

using (var command = new SqlCommand(query, conn)) 
{ 

    foreach (var item in CheckBoxList1.Items.Cast<ListItem>().Where(item => item.Selected)) 
    { 
     command.Parameters.Clear(); 
     command.Parameters.AddWithValue("@planName", item.Text); 

     // If you don't reset the Optional here the next loop on CheckBoxList1 add 
     // to the current value of Optional giving an invelid string 
     string Optional = ""; 
     foreach (var item1 in CheckBoxList2.Items.Cast<ListItem>().Where(item1 => item1.Selected)) 
     { 
       Optional = Optional + item1.Text; 
     } 
     command.Parameters.AddWithValue("@optionPlan", Optional); 
     command.ExecuteNonQuery(); 
    } 
} 
+0

之前非常感謝你的先生! – user3345212