C # DataGridView Проверить, если пусто - PullRequest
12 голосов
/ 10 июня 2009

У меня есть представление данных, которое заполняется данными, возвращаемыми из запроса linq. Если запрос не возвращает результатов, я хочу отобразить окно сообщения. Есть ли способ проверить, пусто ли представление данных?

Привет

Ответы [ 7 ]

30 голосов
/ 10 июня 2009

Вы можете узнать, является ли он пустым, проверив количество строк в DataGridView. Если myDataGridView.Rows.Count == 0, то ваш DataGridView пуст.

2 голосов
/ 17 августа 2017

// это дает количество строк = 1

if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)

// наконец, я изменил код, как показано ниже, и он работает для меня

if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)
2 голосов
/ 09 мая 2016

Метод DGV.Rows.Count проверки, является ли DGV пустым, не работает, если для опции AllowUserToAddRows установлено значение true.

Вы должны отключить AllowUserToAddRows = false, а затем проверить наличие пустых значений следующим образом:

if (dataGridView1.Rows != null && dataGridView1.Rows.Count != 0)
1 голос
/ 13 июня 2012

Многие ответы здесь имеют ссылку на Rows.Count. Обычно это не представляет проблемы, и в большинстве случаев было бы излишним делать то, что я собираюсь предложить.

Но по причинам, упомянутым в этом документе , может быть не очень хорошей идеей вызывать Rows.Count, если DataGridView часто содержит много данных (ячеек >~ 5000 в профилировании памяти я сделал чтобы подтвердить эту статью некоторое время назад).

Избегайте использования свойства Count System.Windows.Forms.DataGridViewSelectedCellCollection для определения количество выделенных клеток. Вместо этого используйте DataGridView.GetCellCount метод и передать в DataGridViewElementStates.Selected значение. Точно так же используйте DataGridViewRowCollection.GetRowCount и DataGridViewColumnCollection.GetColumnCount методы определения количество выбранных элементов, а не доступ к выбранной строке и коллекции столбцов.

В таких случаях вы можете использовать

myDataGridView1.Rows.GetRowCount(.) == 0

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

1 голос
/ 10 июня 2009

На основании результатов Linq вы можете скрыть сетку данных и показать какой-то другой элемент управления (например, литерал или что-то еще), который показывает сообщение. Если вам нужно какое-то всплывающее окно с сообщением, вам нужно добавить туда немного JavaScript.

0 голосов
/ 12 октября 2015

Это должно сделать это:

dataGridView1.RowCount == 0
0 голосов
/ 10 июня 2009

Вы можете проверить свойство Rows.Count представления данных.

Хотя вам также может понадобиться заглянуть в свойство EmptyDataText объекта DataGridView. Это может спасти вас, показывая окно сообщения.

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