Как получить видимое количество строк DataGridView после BindingSource.Filter? - PullRequest
8 голосов
/ 04 февраля 2009

У меня есть таблица, скажем, 1640 предметов. Я установил

bindingSource.Filter = "some filter query string";

и большинство строк исчезают, оставляя, скажем, 400 строк. Я хотел бы иметь возможность сообщать пользователю «Отображение 400 из 1640 элементов», когда они щелкают некоторые текстовые поля, которые изменяют строку фильтра и, следовательно, какие строки видны в объекте dataGridView (во многом как iTunes, но для медицинских данных, а не жанров / исполнители / альбомы, фильтрующие песни).

Я пробовал bindingSource.Count, и он всегда равен 1640, независимо от того, на что установлена ​​строка фильтра (хотя при желании отображается гораздо меньше строк). Я попытался перебрать все строки в dataGridView.Rows и сосчитать только те строки, которые являются видимыми, но все равно суммируются с 1640.

Где я могу получить эту информацию?

Обратите внимание, что я не использую SQL, но bindingSource.DataSource - это DataSource из DataView, обернутый вокруг DataTable (из dataSet, прочитанного из XML).

Ответы [ 5 ]

17 голосов
/ 12 ноября 2013

Попробуйте это: datagridviewname.Rows.GetRowCount(DataGridViewElementStates.Visible);

3 голосов
/ 04 февраля 2009

Джаред,

Недавно мне пришлось сделать именно это. Для меня работало использование свойства DataGridView.Rows.Count после того, как я применил фильтр.

Вы устанавливаете свой источник данных для свойства DataSource BindingSource или DataGridView? Это должен быть BindingSource.

НТН -Jay

1 голос
/ 06 февраля 2009

Я что-то напортачил. Джей прав:

dataGridViewCases.Rows.Count

работает, как и:

bindingSource.Count
1 голос
/ 04 февраля 2009

Как насчет добавления отфильтрованных элементов в отдельную таблицу данных и подсчета для отфильтрованных элементов.

0 голосов
/ 11 ноября 2016

вам просто нужно использовать свойство Count вашего bindingSource ...

ExampleBindoneSource.Count()
...