У меня есть datagridview, который заполняется данными, возвращаемыми из запроса linq. Если запрос не возвращает результатов, я хочу отобразить окно сообщения. Есть ли способ проверить, пуст ли datagridview?
С уважением
У меня есть datagridview, который заполняется данными, возвращаемыми из запроса linq. Если запрос не возвращает результатов, я хочу отобразить окно сообщения. Есть ли способ проверить, пуст ли datagridview?
С уважением
Вы можете узнать, пусто ли оно, проверив количество строк в DataGridView. Если myDataGridView.Rows.Count == 0
, то ваш DataGridView пуст.
Метод DGV.Rows.Count
проверки наличия пустого DGV не работает, если для параметра AllowUserToAddRows
установлено значение true.
Вы должны отключить AllowUserToAddRows = false
, а затем проверить наличие пустого следующим образом:
if (dataGridView1.Rows != null && dataGridView1.Rows.Count != 0)
// это дает количество строк = 1
if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)
//поэтому, наконец, я изменил код, как показано ниже, и он работает для меня
if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)
Основываясь на результатах Linq, вы можете скрыть представление сетки данных и показать какой-либо другой элемент управления (например, литерал или что-то еще), который показывает сообщение. Если вам нужно какое-то всплывающее окно с сообщением, вам нужно добавить туда немного JavaScript.
Многие ответы здесь имеют ссылку на 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 — это не сильно повредит.
Вы можете проверить свойство Rows.Count представления данных.
Хотя вы также можете заглянуть в свойство EmptyDataText объекта DataGridView. Это может спасти вас от показа окна сообщений.
Это должно сделать это:
dataGridView1.RowCount == 0