使用Datagridview Rowvalidating事件删除不符合条件行

zhenxin6699 2014-07-28 04:07:23
尝试使用VB.Net+DataGridview写个增删改程序。
Win7+VB.NET 2010 + DataGridview + Dataset 绑定,通过SqldataAdapter.update更新。
我想检查用户所编辑行有没有不符合条件的单元格,新增行有没有空单元格存在,如果存在不符合单元格或空单元格,则提示用户是否继续,如果用户点击“否”,则程序不保存用户输入结果并删除不符合条件或存在空单元格所在行。
我当前将相关代码写在Datagridview的Rowvalidating事件中,当执行删除代码时,出错提示“不能在此事件处理程序中执行操作“。请问我该如何实现删除不符合条件行。前提是,先检查所在行是否存在不符条件单元格,根据检查结果再执行相应操作。
我该在什么事件中处理不符合条件行的删除动作呢?顺便请说明一下DataGridview事件执行顺序。
请贴出具体执行代码。
谢谢

Private Sub DataGridView1_RowValidating(sender As Object, e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.RowValidating
If (Not Over_load) Then Return
If Me.DataGridView1.Rows.Count <= 1 Then Return
If Deleting Then Return
If Me.DataGridView1.SelectedRows.Count <= 0 Then Return
If Me.DataGridView1.SelectedRows(0).IsNewRow Then Return

System.Console.WriteLine("Rows Count:" & Me.DataGridView1.RowCount)
For Each Col_index As DataGridViewColumn In Me.DataGridView1.Columns
' If Me.DataGridView1.s Then
If IsDBNull(Me.DataGridView1.Rows(e.RowIndex).Cells(Col_index.Index).Value) OrElse Me.DataGridView1.Rows(e.RowIndex).Cells(Col_index.Index).Value.ToString = "" Then
' MessageBox.Show("不允许单元格为空值", "格式错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
If MessageBox.Show("当前编辑行存在空值单元格,如若离开本行,程序将不会更新,是否离开?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then
e.Cancel = True
Exit For
Else
' MsgBox("ss")
' tbl.Rows(e.RowIndex - 1).Delete()
Me.DataGridView1.Rows.RemoveAt(e.RowIndex)
End If
End If
Next
End Sub
...全文
159 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
eaqpi 2014-07-29
  • 打赏
  • 举报
回复
取消是 BindingSource.CancelEdit() 或者 DataSet.RejectChanges
eaqpi 2014-07-29
  • 打赏
  • 举报
回复
如果有BINDINGSOURCE 使用 bindingsource.endedit 如果使用dataset 使用DataSet .AcceptChanges 新增行在没有被dataset接受前是无法被删除的。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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