[英]C# How to deleted multiple checked items from the CheckedListBox?
我想刪除選中列表框中的一個或多個選定項目。 但我不知道我必須怎么做。 請幫忙
這是我的代碼;
private void button2_Click(object sender, EventArgs e)
{
checkedListBox1.Items[checkedListBox1.SelectedIndex].ToString();
SqlCommand del = new SqlCommand("DELETE FROM TABLE1 WHERE personID='" +
personID[checkedListBox1.SelectedIndex] + "' ", con);
con.Open();
for (int i = 0; i < checkedListBox1.Items.Count - 1; i++)
{
if(checkedListBox1.CheckedItems[i]) //this line does not work
{
del.ExecuteNonQuery();
}
}
con.Close();
}
出於安全原因,您應該使用參數。
接下來,您可以使用所需的 id 在循環中設置它。
con.Open();
var command = new SqlCommand("DELETE FROM TABLE1 WHERE personID=? ", con);
var param = del.Parameters.Add("@ID", SqlDbType.Int /* or any relevant type */);
foreach ( var item in checkedListBox1.SelectedItems )
{
param.Value = ((TheTypeOfTheItems)item).NameOfTheID;
command.ExecuteNonQuery();
}
con.Close();
也許您可以通過在 WHERE 子句中添加一些 OR 來構造一個查詢,並在循環后執行一次。
if ( checkedListBox1.SelectedItems.Count > 0 )
{
con.Open();
var command = new SqlCommand("DELETE FROM TABLE1 WHERE ", con);
var id = ( (TheTypeOfTheItems)checkedListBox1.SelectedItems[index] ).NameOfTheID;
command.CommandText += "personID =? ";
command.Parameters.Add("@ID" + index, SqlDbType.Int).Value = id;
if ( checkedListBox1.SelectedItems.Count > 1 )
for ( int index = 1; index < checkedListBox1.SelectedItems.Count; index++ )
{
command.CommandText += "OR ";
var id = ( (TheTypeOfTheItems)checkedListBox1.SelectedItems[index] ).NameOfTheID;
command.CommandText += "personID =? ";
command.Parameters.Add("@ID" + index, SqlDbType.Int).Value = id;
}
command.ExecuteNonQuery();
con.Close();
}
注意:我無法測試代碼,我使用的參數是 odbc 而不是 sql 服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.