DatagridView не отображается значок ошибки или текст ошибки? - PullRequest
14 голосов
/ 15 ноября 2008

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

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

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

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

Ответы [ 11 ]

9 голосов
/ 06 мая 2009

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

DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None
8 голосов
/ 29 октября 2010

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

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

grid.RowTemplate.Height = 22
5 голосов
/ 15 июня 2011

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

4 голосов
/ 21 ноября 2012

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

1 голос
/ 21 апреля 2017

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

gvwWebsites.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "You have already used that address.";
1 голос
/ 15 ноября 2016

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

1 голос
/ 07 августа 2015

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

0 голосов
/ 28 ноября 2016

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

private void gridGrid_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

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

0 голосов
/ 12 мая 2013

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

SendKeys.Send("{ESC}");
0 голосов
/ 18 октября 2011

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

(код VB.Net:)

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

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

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