14

I have a win form (c#) with a datagridview. I set the grid's datasource to a datatable.

The user wants to check if some data in the datatable exists in another source, so we loop through the table comparing rows to the other source and set the rowerror on the datatable to a short message. The datagridview is not showing these errors. The errortext on the datagridviewrows are set, but no error displayed.

Am I just expecting too much for the errors to show and they only show in the context of editing the data in the grid?

I have been tinkering with this for a day and searched for someone that has posted a simalar issue to no avail - help!

4

11 回答 11

11

检查AutoSizeRowsMode设置为DataGridViewAutoSizeRowsMode.None。我发现未设置为默认值无Errortext时,不显示行预览图标。AutoSizeRowsMode

DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None
于 2009-05-06T10:13:09.613 回答
10

这对于原始海报来说有点晚了,但这里为我解决了它......

检查行高。如果小于19则不会绘制图标。尝试将其设置得更高一点,看看是否是问题所在。

grid.RowTemplate.Height = 22
于 2010-10-29T15:27:05.523 回答
6

如果将 e.Cancel 设置为 True,则不会显示该图标。这不会让用户知道该行存在问题。

于 2011-06-14T21:08:31.230 回答
5

DataGridView必须在设置属性时可见ErrorText

于 2012-11-20T21:04:12.937 回答
4

如果您使用的是Visual Studio 2017并且您的数据未绑定到数据源,则必须在单元格而不是行上设置ErrorText ,如下所示:

gvwWebsites.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "You have already used that address.";
于 2017-04-21T09:35:45.213 回答
2

检查dgv.ShowRowErrors财产。

于 2015-08-07T12:08:54.247 回答
2

未显示错误图标的另一个原因是,如果行标题太小。默认情况下,它是 46。如果由于某种原因将行标题设置为较小的大小,例如 30,则不会显示错误图标。

于 2016-11-14T21:37:36.303 回答
1

我在验证用户输入时遇到了类似的问题

private void gridGrid_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

处理程序。问题是我e.Cancel=true在输入无效的情况下设置。

于 2016-11-28T10:20:05.403 回答
0

如果其他人现在仍在搜索:对我有用的解决方案是将(相同的)DataSource 重新分配给 DataGridView,并在设置 RowError 属性后调用网格上的 Refresh 方法。

(VB.Net代码:)

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

之后,新分配的 RowError 终于显示出来了。

于 2011-10-18T10:45:13.180 回答
-1

我相信错误只会在编辑时显示。您可以做的是向您的 DataTable 添加一个 bool 列,它驱动 DataGridView 中图像/自定义列的显示,反映是否存在错误。

于 2008-11-16T07:14:41.753 回答
-1

发送 ESC 击键将强制它显示(至​​少对我有用)

SendKeys.Send("{ESC}");
于 2013-05-12T05:03:41.973 回答