С# DataGridView Проверить, пусто ли

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

С уважением


person Goober    schedule 09.06.2009    source источник
comment
Это ASP .Net или Windows Forms?   -  person SLaks    schedule 10.06.2009


Ответы (7)


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

person Meta-Knight    schedule 09.06.2009
comment
Это не всегда работает, как указано в ответе ниже Ашрафа Абусады. - person TK-421; 29.07.2019

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

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

if (dataGridView1.Rows != null && dataGridView1.Rows.Count != 0)
person Ashraf Sada    schedule 09.05.2016

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

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

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

if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)
person Bijay Budhathoki    schedule 17.08.2017

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

person Matthew Groves    schedule 09.06.2009
comment
не понимаю, зачем вообще нужен jscript - person Goober; 10.06.2009

Многие ответы здесь имеют ссылку на 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 — это не сильно повредит.

person Apoorv    schedule 13.06.2012

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

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

person Brandon    schedule 09.06.2009

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

dataGridView1.RowCount == 0
person Fatos SYLAJ    schedule 12.10.2015