【发布时间】:2018-12-11 12:13:52
【问题描述】:
我想获取变量上的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”类型
我得到了checkedlistBoxvalue = {System.Windows.Forms.CheckedListBox, Items.Count: 13, Items[0]:QTN0001}
【问题讨论】:
-
string selecteditem1 = CheckPreviousTxn.CheckedItems.ToString();是问题所在。CheckedItems返回一个集合,您需要对其进行迭代以提取所有字符串。 -
题外话:您的代码易受 SQL 注入攻击。
-
要获取项目文本,请使用
CheckedListBox的GetItemText方法。要获取项目值,请使用GetItemValue扩展方法。