У меня есть 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)
//это дает строки count = 1
if (dataGridView1.Rows.Count != 0 && dataGridView1.Rows != null)
//Итак, я изменил код, как показано ниже, и он работает для меня
if(dataGridView1.Rows.Count>1 && dataGridView1.Rows != null)
На основе результатов Linq вы можете скрыть представление datagridview и показать другой элемент управления (например, литерал или что-то еще), отображающее сообщение. Если вам нужно какое-то всплывающее окно с сообщениями, вам нужно бросить туда какой-нибудь 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 в представлении datagridview.
Хотя вы также можете просмотреть свойство EmptyDataText DataGridView. Это может спасти вас, показывая сообщение.
Это должно сделать это:
dataGridView1.RowCount == 0