Member 12673779 Ответов: 1

Выберите несколько элементов из контрольного списка и покажите их в datagridview


У меня есть один checklistbox и datagridview, я хочу выбрать несколько элементов из checkedlistbox, и соответствующие данные нужно извлечь из базы данных и отобразить в datagridview, приведенный ниже код работает, когда я выбираю один элемент из checklistbox, но когда я выбираю более одного элемента, приведенный ниже код не работает.

Что я уже пробовал:

string str = "";
            if (Checkedlistbox1.CheckedItems.Count > 0)
            {
                for (int i = 0; i < Checkedlistbox1.CheckedItems.Count; i++)
                {
                        str += Checkedlistbox1.CheckedItems[i].ToString();
                }
             
                string strassign = "Select * from xyz where assigngrp in ('" + str + "')";
                try
                {
                    sda = new SqlDataAdapter(strassign, con);
                    ds = new DataSet();
                    SqlCommandBuilder scb = new SqlCommandBuilder(sda);
                    sda.Fill(ds, "xyz");
                    bsource.DataSource = ds.Tables["xyz"];
                    gridview.DataSource = bsource;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

1 Ответов

Рейтинг:
1

manu_dhobale

Попробуйте заменить

string str = "";
            if (Checkedlistbox1.CheckedItems.Count > 0)
            {
                for (int i = 0; i < Checkedlistbox1.CheckedItems.Count; i++)
                {
                        str += Checkedlistbox1.CheckedItems[i].ToString();
                }

Около
List<ListItem> selected = CheckBoxList1.Items.Cast<ListItem>()
.Where(li => li.Selected)
.ToList();

string str = selected.Select(p => p.Value).ToArray().Aggregate((current, next) => current + ", " + next);


Member 12673779

Является ли ваш код разделяющим checkeditems запятой, если да, то мы можем записать его в
сил += Checkedlistbox1.CheckedItems[я].Метод toString() + ",";

Но это не сработает, потому что мои элементы хранятся в разных строках таблицы..