2011-04-18 232 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