簡體   English   中英

C# 如何從CheckedListBox中刪除多個選中項?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM