首页 > 解决方案 > 从checkedlistbox获取CheckedItems字符串值

问题描述

我想获取变量上的checkedlistBox值我的代码在下面有人可以帮助我吗

private void CheckPreviousTxn_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            int selected = CheckPreviousTxn.SelectedIndex;
            string selecteditem1 = CheckPreviousTxn.CheckedItems.ToString();
            if (selected != -1)
            {
                foreach (string slecteditem in CheckPreviousTxn.CheckedItems)
                {
                    con = new SqlConnection(connectionpath);
                    cmd = new SqlCommand("select QTNCode as 'QTN Code',STKCODE as 'Item Code',STKDESCP as 'Item Name',Quantity,BaseUnit as 'Unit',Rate,DiscountAmount as 'Discount',Amount,VatPercentage as 'VAT %',TotalTaxAmount as 'VAT Amt' from Tbl_QTNDetail where QTNCode ='" + slecteditem + "'", con);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    GrdQtnDetail.DataSource = dt;
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

我收到以下异常

无法将“System.Data.DataRowView”类型的对象转换为“System.String”类型

我得到了checklistBox
value = {System.Windows.Forms.CheckedListBox, Items.Count: 13, Items[0]:QTN0001}

标签: c#winforms

解决方案


CheckedItems不是类型的集合String。您需要使用ListItem或使用Object类似:

 foreach (ListItem selecteditem in CheckPreviousTxn.CheckedItems)
 {
    string itemValue = selectedItem.Value;
    string itemText = selectedItem.Text;
    string item = selectedItem.ToString();
    // use it in query
 }

或者:

foreach(object itemChecked in checkedListBox1.CheckedItems) 
{
   string selectedItem= itemChecked.ToString();
}

请参阅此处的文档以供参考。

边注:

不要对查询进行字符串连接。考虑使用参数化查询,因为您的应用程序容易受到带有字符串连接查询的 sql 注入的影响。


推荐阅读