Заблокирован
1

Фильтрация и поиск по таблице DataGridView

23.05.2012, 21:18. Показов 76121. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе всем время суток! Есть таблица dataGridView, как в ней можно сделать фильтрацию по различным параметрам, например, пользователь ввел имя в TextBox(которое он хочет найти в таблице) и таблица показала все строки. которые содержит это имя. Как можно это реализовать? помогите пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2012, 21:18
Ответы с готовыми решениями:

Поиск и фильтрация строки в DataGridView
Всем здравствуйте. Есть таблица dataGridView, как в ней можно сделать фильтрацию и поиск по...

Поиск по таблице datagridview
Здравствуйте, не могу сделать поиск по таблице, чтобы если попадались два одинаковых значения поиск...

DataGridView, поиск значения в таблице
Доброго времени суток! Очень нужна помощь... есть некоторая таблица, вставленная на форму через...

DataGridView, поиск значения в таблице
Доброго времени суток! Очень нужна помощь... есть некоторая таблица, вставленная на форму через...

19
3 / 3 / 0
Регистрация: 23.05.2012
Сообщений: 6
23.05.2012, 21:38 2
C#
1
ИмяbindingSource.Filter="[название столбца] LIKE'"+textBox.text+"%'";
например так если bindingSource привязан или просто прогнать цикл по всем ячейкам
3
Заблокирован
24.05.2012, 05:10  [ТС] 3
Подскажи пожалуйста. как это реализовать, а то у меня не получается(
0
3 / 3 / 0
Регистрация: 23.05.2012
Сообщений: 6
24.05.2012, 17:07 4
C#
1
2
3
4
5
6
7
  for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
              if (dataGridView1[1, i].Value.ToString() != textBox1.Text)
                    {
                        dataGridView1.Rows.RemoveAt(i);
                        i--;
                                 
                    }
Например так. Где -1 номер столбца, по которому ведется поиск.
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
24.05.2012, 17:22 5
Цитата Сообщение от KaterinaSochi Посмотреть сообщение
dataGridView1.Rows.RemoveAt(i);
ага, а потом что делать, когда фильтр сбрасывается или меняется?
лучше так наверное
C#
1
2
 for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
              dataGridView1.Rows[i].Visible = dataGridView1[1, i].Value.ToString() == textBox1.Text;
1
3 / 3 / 0
Регистрация: 23.05.2012
Сообщений: 6
24.05.2012, 17:28 6
Ух ты) да, это логичнее..
0
Заблокирован
24.05.2012, 18:03  [ТС] 7
А у меня почему-то не срабатывает поиск.. Только таблица очищается.. В чем может быть причина?
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.05.2012, 10:05 8
aleksnice, способ с циклом подразумевает полное соответствие искомого в списке, т.е частичное совпадение не допускается. Для поиска по частичному совпадению нужно использовать способ показанный во втором посте либо усовершенствовать алгоритм проверки в цикле
1
Заблокирован
26.05.2012, 05:51  [ТС] 9
А как тогда можно сделать, чтобы он выводил несколько строчек из таблицы, если данные совпадают? Например, в таблице 3 одинаковых имени и во время их поиска отображались все строки?

Добавлено через 18 часов 6 минут
Подскажите пожалуйста, как можно делать, чтобы после фильтрации появлялись все строки одинаковые, а не только первая найденная!???
0
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 20
06.02.2013, 16:38 10
Цитата Сообщение от nio Посмотреть сообщение
ага, а потом что делать, когда фильтр сбрасывается или меняется?
лучше так наверное
C#
1
2
 for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
              dataGridView1.Rows[i].Visible = dataGridView1[1, i].Value.ToString() == textBox1.Text;
подскажите пожалуйста! Данный метод работает прекрасно, но почему-то ищет только по 2 столбцу, а у меня в таблице их 6. Как сделать так, чтобы поиск проходил по всей таблице?
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.02.2013, 20:11 11
Цитата Сообщение от Nasty58 Посмотреть сообщение
Как сделать так, чтобы поиск проходил по всей таблице?
как-то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
      dataGridView1.Rows[i].Visible = false;
      for (int c = 0; c < dataGridView1.Columns.Count; c++)
      {
           if(dataGridView1[c, i].Value.ToString() == textBox1.Text)
           {
              dataGridView1.Rows[i].Visible = true;
              break;
           }
      }
}
писал без студии, возможны ошибки
1
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 20
07.02.2013, 10:48 12
Не пойму в чём ошибка.... скопировала код, всё хорошо, запустилось... ввожу значение в textBox, нажимаю button...выдаёт ошибку:

Необработанное исключение типа "System.InvalidOperationException" произошло в System.Windows.Forms.dll

Дополнительные сведения: Строку, связанную с положением CurrencyManager, нельзя сделать невидимой.


при этом выделяет вот эту строчку: dataGridView1.Rows[i].Visible = false;
Что делать? Помогите пожалуйста! Очень прошу...
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
07.02.2013, 11:11 13
Цитата Сообщение от Nasty58 Посмотреть сообщение
Что делать?
Строку, связанную с положением CurrencyManager, нельзя сделать невидимой
0
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 20
07.02.2013, 11:37 14
я просто не понимаю где исправить ошибку... я совсем-совсем новичок в этом деле(((
Подскажите, где и как это можно исправить?
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
07.02.2013, 12:06 15
Цитата Сообщение от Nasty58 Посмотреть сообщение
Подскажите, где и как это можно исправить?
проблема заключается в том, то не получается скрыть строку из-за привязки к источнику данных. Поэтому на момент скрытия строк нужно отключить привязку, как это показано в коде по ссылке: между операторами привязки нужно вставить предложенный код. Нет времени писать, пробуй самостоятельно
1
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 20
07.02.2013, 13:31 16
Цитата Сообщение от nio Посмотреть сообщение
проблема заключается в том, то не получается скрыть строку из-за привязки к источнику данных. Поэтому на момент скрытия строк нужно отключить привязку, как это показано в коде по ссылке: между операторами привязки нужно вставить предложенный код. Нет времени писать, пробуй самостоятельно
спасибо! буду пытаться)
0
3 / 3 / 2
Регистрация: 06.03.2015
Сообщений: 107
29.03.2015, 20:59 17
Цитата Сообщение от Nasty58 Посмотреть сообщение
при этом выделяет вот эту строчку: dataGridView1.Rows[i].Visible = false;
Что делать? Помогите пожалуйста! Очень прошу...
Попробуй перед строкой
C#
1
dataGridView1.Rows[i].Visible = false;
написать
C#
1
2
dataGridView1.CurrentCell = null;
dataGridView1.Rows[i].Visible = false;
0
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 3
12.12.2015, 12:32 18
Попробуй перед строкой
C#Выделить код
1
dataGridView1.Rows[i].Visible = false;
написать
C#Выделить код
1
2
dataGridView1.CurrentCell = null;
dataGridView1.Rows[i].Visible = false;
У меня заработало только высвечивается пустая строка в таблице без данных, что мне делать?
0
0 / 0 / 0
Регистрация: 01.01.2019
Сообщений: 3
23.08.2020, 11:17 19
C#
1
2
 for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
              dataGridView1.Rows[i].Visible = dataGridView1[1, i].Value.ToString() == textBox1.Text;
При таком варианте в таблице остаётся не отфильтрованной последняя строка.
Предлагается 2 варианта:
1. Просто добавить знак "=" после знака "<" в параметрах цикла);
или
2. Вместо "dataGridView1.Rows.Count - 1" написать "dataGridView1.Rows.Count".
0
0 / 0 / 0
Регистрация: 26.05.2021
Сообщений: 4
27.05.2021, 00:19 20
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void button2_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked == true)
            {
                var Filtr = from u in result where u.Фамилия == textBox1.Text select u;
                dataGridView1.DataSource = Filtr.ToList<Dann>();
            }
            else if (radioButton2.Checked == true)
            {
                var Filtr = from u in result where u.Страна_назначения == textBox1.Text select u;
                dataGridView1.DataSource = Filtr.ToList<Dann>();
            }
        }
0
27.05.2021, 00:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2021, 00:19
Помогаю со студенческими работами здесь

Поиск по всей таблице DataGridView
У меня есть таблица dataGridView, по которой я могу делать поиск. Но дело в том, что я могу искать...

Поиск в таблице dataGridView в текстовом поле
на форме имеются ТОЛЬКО таблица dataGridView и поле TextBox Вот код. мне нужно, чтобы когда...

Фильтрация в таблице
Есть таблица, соединенная с БД с помощью DataSet. В таблице последний столбец &quot;КСписанию&quot; в нем...

Фильтрация в таблице
Добрый день, нужно в таблице сделать запрос на выделение всех значений (UnixTime) ниже указаного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru