C# GridDataView Cell验证问题
有一个GridDataView,其Cell允许手动输入数据,对该数据要进行有效性验证.
在GridDataView所在界面有几个按钮,Delete,Reset,OK,Cancel.
现在的问题是在输入数据尚未改变CurrentCell进行验证时,点击上述几个Button.
希望实现以下效果:
1.如果点击Delete,可以删除CurrentCell所在行,不管数据是否有效.
2.如果点击Reset,可以清空GridDataView,不管数据是否有效.
3.如果点击OK,则验证输入数据,如果有效则记录GirdDataView中数据,如果无效则提示数据无效,且不记录数据.
4.如果点击Cancel,则可以设置GridDataView.Enable属性,不管数据是否有效.
上述Button有可能是ToolStripButton,个人在调试中发现,gridSite_CellValidating有时在点击Button时发生,有时在Button中设置CurrentCell=null时发生,这个是最让人恼火的......
求解应如果搞定.
------解决方案--------------------把验证方法放到OK处理程序里
------解决方案--------------------CellValidating是那样,不过你可以判断啊,判断e.FormattedValue和cell的value是否一致,如果一致,就e.Cancel = true,标示没有进行修改
------解决方案--------------------reset和 delete 设置属性 CausesValidation = false
------解决方案--------------------
看msdn例子:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.causesvalidation.aspx
------解决方案--------------------验证和你的按钮没关系。Validating的时候去处理
------解决方案--------------------
简单和自定义数据验证
简单数据验证
this.dataGridView1.DataError += new DataGridViewDataErrorEventHandler(dataGridView1_DataError);
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
e.ThrowException = false;
}
自定义数据验证
DataGridView.CellValidating 事件,在单元格失去输入焦点时发生,并启用内容验证功能。