2012-12-05 133 views
4

我有一个循环遍历checkboxlist中的选择。问题是循环触发插入语句两次为每个选择。所以如果用户选中一个框,它会插入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(); 
} 
+0

当你运行代码时,'lines_list.Items'的计数是多少? – MyCodeSucks

+10

看起来不像循环运行两次。我怀疑你点击处理程序是发射两次。也许重复的事件订阅,或者其他。 – vcsjones

+0

只是尝试'如果(li.Selected)'不'如果(li.Selected == true)' – sajanyamaha

回答

1

看起来不像循环运行两次。由于重复的事​​件订阅,我怀疑你的点击处理程序发射了两次。

+0

好搭档哥们! – briskovich