绑定DataTable上的DataGridView DataError

时间:2016-02-26 21:10:55

标签: c# winforms datagridview datatable

所以我有DataGridViewDataSource属性设置为DataTable

表有三行,前两行是只读的,但第三行是自定义列表对象DataViewList。显示优秀和前两列的所有内容都是ReadOnly,因为它们应该是。问题出在第三栏。

DataViewList实现了IList<T>接口。关于它的唯一特别之处是ToString方法返回逗号分隔列表,以便DataGridView可以显示该列。

问题是当用户对第三列进行更改时,在我能够捕获CellEndEdit事件之前,DataGridView会引发DataError事件。我尝试在自定义列表上实现转换,但DataGridView仍然会引发错误"Invalid cast from 'System.String' to 'DataViewList`1"

_data = new DataTable();
DataColumn column = _data.Columns.Add(FIRST, typeof(Element));
column.ReadOnly = true;
column = _data.Columns.Add(SECOND, typeof(Element));
column.ReadOnly = true;
column =_data.Columns.Add(RESULT, typeof(DataViewList<Element>));
dataGridView.DataSource = _data;

我知道因为DataGridView显示TextBoxes中的所有内容,我需要编写代码来处理用户输入,但是在DataGridView触发{DataError之前我找不到捕获输入的位置1}}事件。

1 个答案:

答案 0 :(得分:0)

您需要处理DataGridView.CellParsing Event

  

如果标准转换无法满足您的需求,请处理CellParsing事件以提供自定义值转换为所需类型。

     

当您自己转换值时,请将ConvertEventArgs.Value属性的初始格式化值替换为单元格ValueType属性指定的类型的转换值。要指示不需要进一步解析,请将DataGridViewCellParsingEventArgs.ParsingApplied属性设置为true