2012-12-05 1 views
4

체크 상자 목록의 선택 항목을 반복하는 루프가 있습니다. 문제는 루프가 insert 문을 각 선택 항목에 대해 두 번 발생시키는 것입니다. 따라서 사용자가 하나의 상자를 선택하면 2 개의 행이 삽입됩니다. 사용자가 3 개의 상자를 선택하면 6 개의 행을 삽입하는 식입니다. 선택에 따라 삽입물이 한 번만 발사되도록하려면 어떻게해야합니까?루프가 insert 문을 두 번 실행합니다.

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

그냥 'if (li.Selected)'가 아니라면 (li.Selected == true) ' – sajanyamaha

답변

1

루프가 두 번 실행되는 것처럼 보이지 않습니다. 중복 이벤트 구독으로 인해 클릭 핸들러가 두 번 실행되는 것 같습니다.

+0

잘 잡아! – briskovich