Как добавить проверенные элементы checkListbox в список из таблицы sql? - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть checkListBox, который проверяет элементы из столбца, и если это правда, я хочу добавить элементы из моего столбца SQL в listBox, но он добавляет все значения из столбца в мой listBox

Это моя таблица:

enter image description here

Вот мой код:

private void checkListService_ItemCheck(object sender, ItemCheckEventArgs e)
{
   var con = new DBConnection();
   SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM price", con.Connection);
   DataSet ds = new DataSet();
   da.Fill(ds, "service");

   List<string> services = new List<string>();
   foreach(DataRow row in ds.Tables["service"].Rows)
   {
       listBPrice.Items.Add(row["price"].ToString());
   }
}

Вот результат:

enter image description here

Я хочу, чтобы оно имело единственное значение, соответствующее проверенным элементам.

1 Ответ

0 голосов
/ 10 февраля 2019

Это потому, что вы никогда не фильтруете SQL-запрос, чтобы получить цену выбранных услуг.

Предполагая, что у вас есть класс Price, который моделирует вашу таблицу Prica из базы данных, попробуйте следующий код:

private void checkListService_ItemCheck(object sender, ItemCheckEventArgs e)
{
    CheckedListBox box = sender as CheckedListBox;

        if (box != null)
        {
            var con = new DBConnection();

            SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM price", con.Connection);
            DataSet ds = new DataSet();
            da.Fill(ds, "service");

            var checkedItems = box.SelectedItems;

            var rows = ds.Tables["service"].Rows.AsQueryable().Cast<price>().ToList();

            foreach (var checkedItem in checkedItems)
            {
                var rowsForCheckedItem = rows.Where(x => x.service == ((price)checkedItem).service);

                foreach (var row in rowsForCheckedItem)
                {
                    listBPrice.Items.Add(row.price);
                }
            }
        }
}
...