Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2014, 18:26   #1
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию Ошибка: DataGridView1 фильтр

Пытаюсь к таблице DataGridView1 приделать фильтр по введеной подстроке. Т.е. если мы в поле написали некое слово(например, имя), то в таблице останутся только те записи, которые удовлетворяют данному слову (по столбцу "Имя"). Код следующий:

Код:
если_нажали_на_кнопку{
BindingSource bs = new BindingSource(); //создаем объект класса BindingSource
bs.DataSource = (BindingSource)dataGridView1.DataSource; //переносим содержимое таблицы
bs.Filter = "ColumnFirstname LIKE'%" + searchField.Text + "%'";  //ColumnFirstname - имя столбца, в котором мы ищем подстроку searchField.Text(вводится в поле)
dataGridView1.DataSource = bs; //отфильтрованную таблицу возвращаем в DataGridView1
dataGridView1.Refresh();   //обновляем таблицу
}
Итог: Пустая таблица. Где логика нарушена?
Baburek вне форума Ответить с цитированием
Старый 19.02.2014, 18:52   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

чую ученики фленова
за это удавить не жалко
eval вне форума Ответить с цитированием
Старый 20.02.2014, 08:57   #3
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Ученики Stackoverflow и еще в процессе обучения (4й день знакомства с C# и студией). Подскажите, пожалуйста, за какое именно место кода хочется удавить?

Последний раз редактировалось Baburek; 20.02.2014 в 09:47.
Baburek вне форума Ответить с цитированием
Старый 20.02.2014, 09:56   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

да сразу же за это
Цитата:
BindingSource bs = new BindingSource();
bs.DataSource = (BindingSource)dataGridView1.DataSo urce;
вот поясните зачем это все ? только не надо повторять те ремарки, в которых смысла 0, а что действительно тут, а потом подумаем а не надо ли это сразу потереть чтоб никто не видел..
eval вне форума Ответить с цитированием
Старый 20.02.2014, 14:52   #5
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
да сразу же за это
вот поясните зачем это все ? только не надо повторять те ремарки, в которых смысла 0, а что действительно тут, а потом подумаем а не надо ли это сразу потереть чтоб никто не видел..
Я пытался в качестве источника взять datagridview. Сейчас пришел к выводу, что лучше будет заполнить DataSet таблицами данных и уже потом выводить что мне нужно в datagridview. Т.е. пользоваться контейнером для вывода
Baburek вне форума Ответить с цитированием
Старый 20.02.2014, 15:12   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

грид на то и грид, чтоб отображать данные, а источник вы ему кидаете биндингсоурс, а биндингсоурс только посредник между выводом и самими данными
т.е. это просто проводник, ему тоже надо дать данные
как-то изначально вы ему давали?

данные должны быть хранилище, такого как например датасет, дататэйбл, всевозможные листы и хэшы ...

Последний раз редактировалось eval; 20.02.2014 в 15:15.
eval вне форума Ответить с цитированием
Старый 20.02.2014, 16:40   #7
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Большое спасибо за наводку! Раньше тупо вносил данные в dataGridView из Xml и с ними работал. Теперь сначала в DataSet читаю, потом создаю представление данных(DataView) и потом передаю его BindingSource. Вроде даже работает)

Остановился на следующей реализации:

Код:
XmlReader xmlFile;

xmlFile = XmlReader.Create(@"..\..\test.xml", new XmlReaderSettings());
DataSet ds = new DataSet();
ds.ReadXml(xmlFile);

DataTableCollection tables = ds.Tables;
DataView view1 = new DataView(tables[0]);

BindingSource source1 = new BindingSource();
source1.DataSource = view1;

dataGridView1.DataSource = source1;

source1.Filter = "name = '"+searchField.Text+"'";
Baburek вне форума Ответить с цитированием
Старый 20.02.2014, 20:18   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
DataTableCollection tables = ds.Tables;
DataView view1 = new DataView(tables[0]);
это лишнее, в таблице есть дефаултвью, его биндингсоурс сам дастанет из тэйбла, просто соурсу дайте таблицу
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр по неравенству дат, в чем ошибка? Avalon_Albio Помощь студентам 4 27.06.2013 07:43
Переформирование dataGridView1 meta13 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 06.12.2012 08:41
Фильтр DBGrid. Ошибка. Nikon32rus БД в Delphi 3 15.02.2012 17:30
DataGridView1 vasylshvv Общие вопросы .NET 2 01.10.2008 12:13
dataGridView1 sergei64_89 Общие вопросы .NET 5 15.09.2008 10:03