DatagridView Не отображается значок ошибки или текст ошибки?

У меня есть форма выигрыша (С#) с datagridview. Я установил источник данных сетки в datatable.

Пользователь хочет проверить, существуют ли некоторые данные в datatable в другом источнике, поэтому мы просматриваем таблицу, сравнивая строки с другим источником, и устанавливаем rowerror в datatable для короткого сообщения. Данные datagridview не показывают эти ошибки. Определяется errortext на datagridviewrows, но не отображается ошибка.

Я просто ожидаю слишком многого для появления ошибок, и они отображаются только в контексте редактирования данных в сетке?

Я занимался этим днем ​​и искал кого-то, кто опубликовал проблему simalar безрезультатно - help!

Ответы

Ответ 1

Убедитесь, что для параметра AutoSizeRowsMode установлено значение DataGridViewAutoSizeRowsMode.None. Я обнаружил, что значок предварительного просмотра строки Errortext не отображается, если AutoSizeRowsMode не установлен в значение по умолчанию для него.

DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None

Ответ 2

Это немного поздно для оригинального плаката, но вот что решило это для меня...

Проверить высоту строки. Если оно меньше 19, оно не будет нарисовать значок. Попробуйте установить его немного выше, чтобы увидеть, если это проблема.

grid.RowTemplate.Height = 22

Ответ 3

Если вы установили e.Cancel в True, значок не отображается. Это не позволяет пользователю узнать, что проблема существует в этой строке.

Ответ 4

DataGridView должен быть виден во время установки свойства ErrorText.

Ответ 5

Проверьте свойство dgv.ShowRowErrors.

Ответ 6

Если вы используете Visual Studio 2017, и ваши данные не привязаны к источнику данных, вам нужно установить ErrorText в ячейке , а не в строке, например это:

gvwWebsites.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "You have already used that address.";

Ответ 7

В случае, если кто-то еще ищет в настоящее время: решение, которое сработало для меня, состояло в том, чтобы повторно назначить (тот же) DataSource в DataGridView и вызвать метод Refresh в сетке после установки свойств RowError.

(код VB.Net:)

myDataGridView.DataSource = myDataSet.Tables(0) 
myDataGridView.Refresh()

После этого наконец были отображены вновь назначенные RowError.

Ответ 8

Еще одна причина, по которой значок ошибки не отображается, если размер заголовка строки слишком мал. По умолчанию это 46. Если по какой-то причине вы установите заголовок строки меньшего размера, например 30, значок ошибки не будет отображаться.

Ответ 9

Я считаю, что ошибки будут отображаться только при редактировании. Что вы можете сделать, так это добавить столбец bool в свой DataTable, который управляет отображением изображения/настраиваемого столбца в DataGridView, отражающим, есть ли ошибка или нет.

Ответ 10

Отправить ESC-нажатие заставит его показать (по крайней мере, работал у меня)

SendKeys.Send("{ESC}");

Ответ 11

У меня возникла аналогичная проблема при проверке ввода пользователя в

private void gridGrid_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

обработчик. Проблема заключалась в том, что я установил e.Cancel=true в случае недопустимого ввода.