Member 12673779 Ответов: 2

Отображение предыдущих и новых данных в datagridview


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

Он работает абсолютно правильно, когда я выбираю один из элементов из checkedlistbox, когда я выбираю два элемента, то он показывает только последние выбранные значения элемента.

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

for (int j = 0; j <= i - 1; j++)
{
    string s = "select * from Final where Assigrp ='" + checkedListBox2.CheckedItems[j].ToString() + "'";
    sda = new SqlDataAdapter(s, con);
    ds = new DataSet();
    SqlCommandBuilder scb = new SqlCommandBuilder(sda);
    sda.Fill(ds, "Final");
    bsource.DataSource = ds.Tables["Final"];
    dataGridView1.DataSource = bsource;

}

[no name]

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

Member 12673779

Мне нужно спроектировать как
пример:
Предположим, если я выбрал "ABC" из checkedlistbox, соответствующие данные извлекаются из базы данных и отображаются в datagridview, если я выберу "ABC" и "XYZ", он должен извлечь данные ABC и XYZ из базы данных и отобразить в datagridview..

И если я снял флажок "ABC", данные ABC должны быть удалены из datagridview .

Надеюсь, мой вопрос ясен...

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

2 Ответов

Рейтинг:
14

Karthik_Mahalingam

попробовать это

string where = "";
           foreach (object item in checkedListBox1.CheckedItems)
               where += string.Format("'{0}',", item);
           where = where.TrimEnd(',');
           string query = "select * from Final where Assigrp in ({0})";
           string s = string.Format(query, where);
           sda = new SqlDataAdapter(s, con);


Member 12673779

Спасибо спасибо спасибо вам ооочень много
это сработало для меня..

Karthik_Mahalingam

добро пожаловать :)

Рейтинг:
1

ZurdoDev

Ваш sql где получает один элемент. Используйте WHERE Assigrp IN () и постройте свой список идентификаторов таким образом.


Member 12673779

Но for loop принимает только одно значение и отображает его в datagridview..
Если я использую Where Assigrp IN (), то он показывает тот же результат..
А если я удалю for loop и использую Where Assigrp IN (), то он не будет показывать данные в datagridview.

ZurdoDev

Используйте свой цикл для построения списка идентификаторов, а затем один раз вызовите sql с помощью оператора WHERE IN ().

Member 12673779

можете ли вы пожалуйста, поделитесь примером..

Member 12673779

Я попробовал ниже код для хранения checkeditems, ниже код хранит проверенные элементы из checkedlistbox, но мои элементы хранятся в разных строках, а не в одной строке таблицы (базы данных).

не могли бы вы помочь мне искать предметы ряд за рядом?.

строка str = "";
если ( checkedListBox1.CheckedItems.Граф > 0)
{
for (int i = 0; i < checkedListBox1. CheckedItems.Граф; i++)
{
сил += checkedListBox2.CheckedItems[я].Метод toString();
}
}