关于DataGridView_DataError事件的问题

bysdy 2008-09-30 04:33:54
DataGridView中调试时候提示
---------------------------
“DataGridView 默认错误”对话框
---------------------------
DataGridView 中发生以下异常:
System.ArgumentException: 不能将列“CQUESTION_ID”设置为空。请改用 DBNull。
在 System.Data.DataRow.set_Item(DataColumn column, Object value)
在 System.Data.DataRowView.SetColumnValue(DataColumn column, Object value)
在 System.Data.DataColumnPropertyDescriptor.SetValue(Object component, Object value)
在 System.Windows.Forms.DataGridView.DataGridViewDataConnection.PushValue(Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex, Object value)
要替换此默认对话框,请处理 DataError 事件。
于是我加入代码

private void classesDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{

}

但是那个默认的对话框仍然弹出,请问下要怎么样才能让他变成我自己写的处理,我是新手刚刚学C#请大家说的详细点谢谢
...全文
2130 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
JIA237046854 2012-06-20
  • 打赏
  • 举报
回复
这个错误好像是自动引用的。我的解决方法是直接提示:
private void dgv_cnyjap_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show("修改的内容不是数字类型!");
return;
}
这个从错误比 CellEndEdit 编辑事件提前一步,怎么回事啊,其他的事件我没有设置啊!!
qq5181688 2011-04-20
  • 打赏
  • 举报
回复
吼吼,我测试出来了咧!
'************************************************验证库存输入
Private Sub mygrid_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles mygrid.CellValidating
If mygrid.Columns(e.ColumnIndex).Name = "库存" Then
If e.FormattedValue.ToString().Length = 0 Then
mygrid.Rows(e.RowIndex).ErrorText = "不能为空"
MsgBox("期初库存不能为空,请重新输入!", MsgBoxStyle.Information, "小太阳进销存信息提示")
e.Cancel = True
Exit Sub
End If
If Not IsNumeric(e.FormattedValue.ToString()) Then
mygrid.Rows(e.RowIndex).ErrorText = "库存输入不正确"
MsgBox("您的库存输入不正确,将返回原始值!", MsgBoxStyle.Information, "小太阳进销存信息提示")
mygrid.Rows(mygrid.CurrentRow.Index).Cells(e.ColumnIndex).Value = ""
e.Cancel = True
End If
End If
End Sub

Private Sub mygrid_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles mygrid.DataError

End Sub
zhoyal 2008-10-07
  • 打赏
  • 举报
回复
我也遇遇到了这样的问题啊,不知怎么解决!!!
bysdy 2008-10-01
  • 打赏
  • 举报
回复
谢谢楼上的了
不知道为什么还是不行
查了很多资料都说用
private void classesDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}

这个函数就行了
但我的就是不行,郁闷
决定还是换种方法了~~~~
锡安sion 2021-07-03
  • 举报
回复
@bysdy 我的也不行,55555,能找的方法都试了
lsj_zrp 2008-09-30
  • 打赏
  • 举报
回复
我以前一个项目就是这样用得
绑定的数据源是数据类型,输入字符会报错,就这样处理得
你可以调试看一下
bysdy 2008-09-30
  • 打赏
  • 举报
回复
楼上的大哥,还是不行饿~~

private void classesDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{//classesDataGridView是我项目中的name
if (e.ColumnIndex == 1)//不能为空的数值所在的列
MessageBox.Show("不能为空!");


}

但弹出还是原来的那个DataGridView 默认错误对话框
lsj_zrp 2008-09-30
  • 打赏
  • 举报
回复
private void dgDrawWaterProject_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
if (e.ColumnIndex == 1)//不能为空的数值所在的列
MessageBox.Show("不能为空!");
}
bysdy 2008-09-30
  • 打赏
  • 举报
回复
顶上去呃~~~
bysdy 2008-09-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rockyvan 的回复:]
C# codetry
...
catch ex as System.ArgumentException
MsgBox(ex.Message.ToString.Trim, MsgBoxStyle.OkOnly, "系統提示!")
...
[/Quote
不好意思请问下这个TRY放到哪里啊?
提示异常是因为我在数据库里禁止了空项,而在操作的时候没有输入内容
rockyvan 2008-09-30
  • 打赏
  • 举报
回复
try
...
catch ex as System.ArgumentException
MsgBox(ex.Message.ToString.Trim, MsgBoxStyle.OkOnly, "系統提示!")
...

111,083

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧