Фильтрация данных в DataGridView с помощью LINQ

824
06 января 2017, 08:22

Есть пустой DataGridViewкоторый привязан к источнику данных, и настроен на отображения двух столбцов Id и Name.

Нужно отфильтровать данные, по запросу введенным в TextBox.

Фильтрацию делаю с помощью

var selected = db.Products.Where(p => p.Name.ToString().StartsWith(textBox1.Text)).OrderBy(p => p.Name);
foreach (var item in selected)
{
    dataGridView1.Rows[i].Cells[0].Value = item.Id;
    dataGridView1.Rows[i].Cells[1].Value = item.Name;   
}

i - счетчик строк, но когда он равен 1, происходит ошибка "Индекс за приделами диапазона".

Добавлять строку с помощью метода Rows.Add() тоже не получается, программно нельзя добавить строки в Grid с привязкой данных.

Такой способ работает если Grid не привязан к данным. Мне надо работать с привязкой данных.

Answer 1

Можно просто обновлять источник данных:

dataGridView1.DataSource = selected.ToArray();
Answer 2

Скорее, нужно приводить не к Array, a к списку - ToList();.

READ ALSO
Когда используется Entity SQL?

Когда используется Entity SQL?

Когда к нему прибегают?

335
Добавить счётчик кликов submit

Добавить счётчик кликов submit

Скрипт статистики посещений, на странице есть форма и кнопка submit, как добавить в скрипт счётчик кликов?

434