Получить строковое значение CheckedItems из проверенного списка - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу получить значение selectedlistBox для переменной, мой код приведен ниже. Кто-нибудь может мне помочь'System.Data.DataRowView' для ввода 'System.String'

, и я получаю проверенный списокBox
value = {System.Windows.Forms.CheckedListBox, Items.Count: 13, Items[0]:QTN0001}

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Еще одна вещь, если вы заполните datatable внутри цикла for, вы получите только последние проверенные значения datatable.Если вы хотите, чтобы все проверенные элементы находились в одной таблице данных, либо создайте таблицу данных перед циклом for и добавьте новые данные в эту таблицу данных:

    DataTable dtBig = new DataTable();
    foreach (ListItem selecteditem 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 ='" + selectedItem.ToString()+ "'", con);
       SqlDataAdapter da = new SqlDataAdapter(cmd);
       DataTable dt = new DataTable();
       da.Fill(dt);
       dtBig.Add(dt);
  }
  GrdQtnDetail.DataSource = dtBig;

, либо вы можете воспользоваться предложением в sql, которое лучше для производительности:

string[] items = CheckPreviousTxn.CheckedItems.OfType<object>().Select(item => item.ToString()).ToArray();
string resultItems = string.Join("','", items);
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 IN ('" + resultItems+ "')", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
GrdQtnDetail.DataSource = dt;
0 голосов
/ 11 декабря 2018

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();
}

См. DOCS здесь для справки.

Side Note:

Не выполнять конкатенацию строк для запросов.Рассмотрите возможность использования параметризованных запросов, так как ваше приложение уязвимо для SQL-инъекций со строковыми каскадными запросами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...