c# – DataGridView DataError事件保留无效行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – DataGridView DataError事件保留无效行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1586字,纯文字阅读大概需要3分钟。
内容图文
![c# – DataGridView DataError事件保留无效行](/upload/InfoBanner/zyjiaocheng/803/2516b12f247a4296bd95133625fec412.jpg)
我正在开发一个Winforms应用程序,它显示一个绑定到某个数据库表的DataGridView.
它允许插入新的条目,并进行一些数据验证.
如果将所需列留空,或者违反了其中一个唯一约束,则DataError事件将调用此函数:
protected void _data_error(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(this,e.Exception.Message,"Error");
e.ThrowException = false;
e.Cancel = false;
}
关闭弹出窗口后,将删除正在编辑的新行.
当对已经保存的行(更新操作)执行此操作时,该行将丢失其更改并失去焦点.
我认为这意味着我需要发信号通知应用程序以保持行可编辑,但我不知道该怎么做.
矛盾的是,如果我用throw(e.Exception)替换事件处理程序,异常将被抛出并由未捕获的异常处理程序拾取,但在该窗口关闭后保留新行.
如何在DataError事件上保留新行?
编辑:
我的下一个想法是保存行并在MessageBox弹出后将其添加到DataGridView的数据源.
这不起作用,因为向数据源添加数据会将其添加为已提交的行,因为数据无效而将数据保留为可编辑行,因此不会发生验证.
解决方法:
花了我几天,但这是我如何解决它,但我仍然是一个更好的方式开放.
在DataGridView.RowValidating事件中,验证每个单元格的内容.
如果它无效,请执行以下操作:
Grid.Rows[e.RowIndex].ErrorText = "Concisely describe the error and how to fix it";
e.Cancel = true;
并确保通过事件处理程序清除下一行程中的错误文本.
例如,对于用户输入无效类型的数据,例如将文本文本转换为仅数字列的情况,您将必须处理DataGridView.DataError事件中的错误.使用相同的代码:
Grid.Rows[e.RowIndex].ErrorText...
但是没有必要清除ErrorText,因为您的行验证事件将处理它.
注意:这将不允许您有弹出窗口通知用户有什么问题,它将使用DataGridView错误,这是网格左侧的红色感叹号,鼠标悬停文本显示您填写的错误文本.只要你有一个MessageBox弹出窗口,你就会失去对可编辑数据的关注并丢失行.
内容总结
以上是互联网集市为您收集整理的c# – DataGridView DataError事件保留无效行全部内容,希望文章能够帮你解决c# – DataGridView DataError事件保留无效行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。