【发布时间】:2012-12-05 17:47:27
【问题描述】:
我有一个循环遍历复选框列表中的选择。问题是循环为每个选择触发两次插入语句。因此,如果用户选中一个框,它会插入 2 行。如果用户选择 3 个框,则插入 6 行,依此类推。如何确保每次选择只触发一次插入?
protected void btn_test_Click(object sender, EventArgs e) {
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Insert into t_ap_line_setup (line,date) values (@line,getdate())";
cmd.Connection = this.sqlConnection1;
this.sqlConnection1.Open();
foreach ( ListItem li in lines_list.Items ) {
if (li.Selected == true) {
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@line", li.Text);
cmd.ExecuteNonQuery();
}
}
this.sqlConnection1.Close();
}
【问题讨论】:
-
运行代码时,
lines_list.Items的计数是多少? -
看起来循环没有运行两次。我怀疑您单击处理程序正在触发两次。可能是重复的事件订阅,或者其他什么。
-
只尝试 'if (li.Selected)' 而不是 'if (li.Selected == true)'
-
@sajanyamaha 有什么区别?
-
@vcsjones - 你是对的。我为按钮单击事件提供了两个事件处理程序。将其发布为并回答,我会接受它。
标签: c# asp.net checkboxlist