当我检查CheckedListBox
中的多个项目时,它只会得到最后选择的项目的Selected.Value
,并将其使用foreach的次数。
额外内容:这是一个可以在特定日期进行锻炼的应用程序,因此它是锻炼应用程序,但是当您在CheckedListBox
中选择多个锻炼时,它只会添加最后选择的值的项目。
因此选择3个不同的项(pushups,pullup,situps)-> 3个仰卧起坐添加了所有相同的值。
将练习添加到其他正常 ListBox
的代码:
query = "INSERT INTO Xercise_Day (DayId, ExerciseId) " +
"VALUES(@DayId, @ExerciseId)";
foreach (CheckedListBox exercise in clbXcercises.CheckedItems)
{
using (connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(query, connection))
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
command.Parameters.AddWithValue("@DayId", scrollBarDays.Value);
command.Parameters.AddWithValue("@ExerciseId", clbXcercises.SelectedValue);
DataTable data = new DataTable();
adapter.Fill(data);
lsBoxDailyX.DataSource = data;
lsBoxDailyX.DisplayMember = "Naam";
}
DailyX();
}
for(int i = 0; i < clbXcercises.Items.Count; i++)
{
clbXcercises.SetItemChecked(i, false);
}
答案 0 :(得分:0)
如评论中所述,引用exercise
而不是clbXcercises
以获得所选值。代码变为:
foreach (object exercise in clbXcercises.CheckedItems)
{
using (connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(query, connection))
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
command.Parameters.AddWithValue("@DayId", scrollBarDays.Value);
command.Parameters.AddWithValue("@ExerciseId", exercise.ToString());
DataTable data = new DataTable();
adapter.Fill(data);
lsBoxDailyX.DataSource = data;
lsBoxDailyX.DisplayMember = "Naam";
}
DailyX();
}