2016-02-26 83 views
1

因此我有一個DataGridView,它將DataSource屬性設置爲DataTable綁定數據表上的DataGridView DataError

該表有三行,前兩個是隻讀的,但第三個是自定義列表對象,DataViewList。一切都很棒,前兩列是ReadOnly,因爲它們應該是。問題出在第三欄。

DataViewList實現了IList<T>接口。唯一特別的是ToString方法返回逗號分隔列表,以便DataGridView可以顯示該列。

問題是,當用戶更改第三列時,在我能趕上CellEndEdit事件之前,DataGridView將引發DataError事件。我試圖在自定義列表上實現轉換,但DataGridView仍然會報錯,​​。

_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顯示一切都在文本框,我需要編寫代碼來處理用戶輸入,但我不能找到DataGridView閃光之前在​​那裏趕上輸入DataError事件。

回答

0

您需要處理DataGridView.CellParsing Event

如果標準轉換不能滿足您的需求,處理CellParsing事件提供自定義值轉換爲所需類型。

當您自己轉換該值時,請將ConvertEventArgs.Value屬性的初始格式化值替換爲由單元格ValueType屬性指定的類型中的轉換值。要指示不需要進一步解析,請將DataGridViewCellParsingEventArgs.ParsingApplied屬性設置爲true

+0

這工作完美,謝謝你的幫助! –