5 つの目標と 5 人の従業員がいます。各目標は、これら 5 人の従業員の任意の数に割り当てることができます。したがって、目標ごとに 5 つの CheckBoxLists があり、各 CheckBoxList にはこれら 5 人の従業員の名前が項目として含まれています。
どの従業員にどの目標が割り当てられているかをデータベースから取得したいと考えています。次のコードがあります。
List<CheckBoxList> checkboxlists = new List<CheckBoxList>();
checkboxlists.Add(CheckBoxList1);
checkboxlists.Add(CheckBoxList2);
checkboxlists.Add(CheckBoxList3);
checkboxlists.Add(CheckBoxList4);
checkboxlists.Add(CheckBoxList5);
for (int z = 1; z <= checkboxlists.Count; z++)
{
SqlCommand check = new SqlCommand("SELECT ISGoal1, ISGoal2,ISGoal3, ISGoal4,ISGoal5 FROM PRM2011_EMPLOYEE_GOAL WHERE EmployeeID = '" + employeeid[z - 1] + "'", con);
SqlDataReader y = check.ExecuteReader();
y.Read();
for (int j = 1; j <= 5; j++)
{
if (null != y && y.HasRows)
{
string yes_or_no = y["ISGoal" + j].ToString().Trim();
if (yes_or_no == "Yes")
{
checkboxlists[j-1].Items[z-1].Selected = true;
}
//else checkboxlists[j - 1].Items[z - 1].Selected = false;
}
}
y.Close();
}
私の問題は、従業員の目標を 1 つ選択しても、その特定の従業員に対応するすべてのチェックボックスが選択されることです。なぜこうなった?
それに応じて、投稿されたコードのelse部分をコメントアウトし、目標のいずれかが選択されていない場合、その従業員に対応するすべてのチェックボックスが選択解除されます. 助けてください。