2011-04-18 239 views
0

我有5個複選框列表,每個複選框列表都有相同的6個複選框。 我必須在特定條件下在page_Load期間檢查這些複選框。 我該怎麼做。?從條件複選框列表中選擇複選框

for (int j = 0; j < no_of_listitem; j++) 
{ 
    SqlCommand check = new SqlCommand("SELECT ISGoal1, ISGoal2,ISGoal3, ISGoal4,ISGoal5 FROM PRM2011_EMPLOYEE_GOAL WHERE EmployeeID = '" + employeeid[j] + "'", con); 
    SqlDataReader y = check.ExecuteReader(); 
    while (y.Read()) 
    { 
     if (null != y && y.HasRows) 
     { 
      string yes_or_no = y["ISGoal1"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList1.Items[j].Selected = true; 
      } 

      //else CheckBoxList1.Items[j].Selected = false; 

      yes_or_no = y["ISGoal2"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList2.Items[j].Selected = true; 
      } 
      //else CheckBoxList2.Items[j].Selected = false; 

      yes_or_no = y["ISGoal3"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList3.Items[j].Selected = true; 
      } 
      //else CheckBoxList3.Items[j].Selected = false; 

      yes_or_no = y["ISGoal4"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList4.Items[j].Selected = true; 
      } 
      //else CheckBoxList4.Items[j].Selected = false; 

      yes_or_no = y["ISGoal5"].ToString(); 
      yes_or_no = yes_or_no.Trim(); 
      if (yes_or_no == "Yes") 
      { 
       CheckBoxList5.Items[j].Selected = true; 
      } 
      //else CheckBoxList5.Items[j].Selected = false; 
     } 
    } 
    y.Close(); 
} 

employeeid[]包含的6個employees.no_of_listitems id爲6,其是thses 6個僱員ID的列表。

回答

0

用你的CheckBoxList創建一個列表。然後,用這樣的代碼替換代碼:

​​

請記住,此代碼不是類型安全的。通常情況下,您希望避免在代碼中使用字符串,並且y [「ISGoal」+ z]可能爲空。如果是這樣,應用程序將崩潰。這意味着你想進行檢查以確保它沒問題。試圖在null上生成ToString()或Trim()會導致NullPointerException。您可能還想在數據庫中逐個更改「是」。合作會更安全。如果有人寫「真」而不是寫呢?

我希望它有幫助。如果您有任何問題,請不要猶豫。

+0

如何創建複選框列表? 我的應用程序是這樣的,沒有人寫「是」或「否」。代碼是這樣的,如果複選框被選中,則在數據庫中更新「是」。但是,你還有什麼建議來處理這種情況。 – scooby 2011-04-18 13:06:47

+0

'List checkboxLists = new List (); checkboxLists.Add(CheckBoxList1); ...' – 2011-04-18 15:31:31

+0

通過在代碼中寫入YES或NO,可以毫無理由地在數據庫中使用更多的空間。有一點會使用更少的空間,是一個更好的主意。通過列出CheckBoxList列表,您可以在每個列表上循環,而不是複製並粘貼您在問題中發佈的所有代碼。 – 2011-04-18 15:33:25