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

问题描述

尝试使用VB.Net+DataGridview写个增删改程序。Win7+VB.NET2010+DataGridview+Dataset绑定,通过SqldataAdapter.update更新。我想检查用户所编辑行有没有不符合条件的单元格,新增行有没有空单元格存在,如果存在不符合单元格或空单元格,则提示用户是否继续,如果用户点击“否”,则程序不保存用户输入结果并删除不符合条件或存在空单元格所在行。我当前将相关代码写在Datagridview的Rowvalidating事件中,当执行删除代码时,出错提示“不能在此事件处理程序中执行操作“。请问我该如何实现删除不符合条件行。前提是,先检查所在行是否存在不符条件单元格,根据检查结果再执行相应操作。我该在什么事件中处理不符合条件行的删除动作呢?顺便请说明一下DataGridview事件执行顺序。请贴出具体执行代码。谢谢PrivateSubDataGridView1_RowValidating(senderAsObject,eAsSystem.Windows.Forms.DataGridViewCellCancelEventArgs)HandlesDataGridView1.RowValidatingIf(NotOver_load)ThenReturnIfMe.DataGridView1.Rows.Count<=1ThenReturnIfDeletingThenReturnIfMe.DataGridView1.SelectedRows.Count<=0ThenReturnIfMe.DataGridView1.SelectedRows(0).IsNewRowThenReturnSystem.Console.WriteLine("RowsCount:"&Me.DataGridView1.RowCount)ForEachCol_indexAsDataGridViewColumnInMe.DataGridView1.Columns'IfMe.DataGridView1.sThenIfIsDBNull(Me.DataGridView1.Rows(e.RowIndex).Cells(Col_index.Index).Value)OrElseMe.DataGridView1.Rows(e.RowIndex).Cells(Col_index.Index).Value.ToString=""Then'MessageBox.Show("不允许单元格为空值","格式错误",MessageBoxButtons.OK,MessageBoxIcon.Error)IfMessageBox.Show("当前编辑行存在空值单元格,如若离开本行,程序将不会更新,是否离开?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)=Windows.Forms.DialogResult.NoThene.Cancel=TrueExitForElse'MsgBox("ss")'tbl.Rows(e.RowIndex-1).Delete()Me.DataGridView1.Rows.RemoveAt(e.RowIndex)EndIfEndIfNextEndSub

解决方案

解决方案二:
如果有BINDINGSOURCE使用bindingsource.endedit如果使用dataset使用DataSet.AcceptChanges新增行在没有被dataset接受前是无法被删除的。
解决方案三:
取消是BindingSource.CancelEdit()或者DataSet.RejectChanges

时间: 2024-07-30 18:22:17

使用Datagridview Rowvalidating事件删除不符合条件行的相关文章

求VS制作安装项目经验:指定卸载时不删除某些文件、在卸载前判断如果不符合条件则取消卸载等

问题描述 用VS制作安装项目,要求可以指定卸载时不删除某些文件.在卸载前判断如果不符合条件则取消卸载(取消卸载的代码怎么写?例如要调用什么方法或发送什么消息)等,另外,还发现OnBeforeInstall比Install还要晚调用,怎么回事?请高手指点,万分感谢!具体的需求如下:1.卸载前判断程序是否正在运行,如果正在运行则提示用户"先退出程序,然后再重新执行卸载操作",跟着安装程序应该能取消本次安装操作.2.卸载后要保留安装位置处的用户数据文件,不要删除掉,在下次安装后可以使用这些数

asp.net动态删除表格的行

问题描述 asp.net动态删除表格的行 当点击表格的某行时,将该行ID赋值给Text.value._Page_Load里添加代码使得刷新页面时该行被删除大神们帮帮我,是在是找不出错误来了.就是没有办法实现删除行的功能.后天获取Text1.Value是什么都没有,为什么会这样呢_前台代码: <%@ Page Language=""C#"" AutoEventWireup=""true"" CodeFile="&

《R语言编程艺术》——3.4 增加或删除矩阵的行或列

3.4 增加或删除矩阵的行或列 严格来说,矩阵的长度和维度是固定的,因此不能增加或删除行或列.但是可以给矩阵重新赋值,这样可以得到和增加或删除一样的效果.3.4.1 改变矩阵的大小 回忆之前通过重新赋值改变向量大小的方法: 第一个例子里,x原来长度为5,通过拼接和重新赋值,将其长度变为6.事实上我们没有改变x的长度,而是生成一个新的向量,然后赋值给x. 注意 重新赋值的过程可能会在用户看不见的情况下进行,在14章我们将会介绍.例如,即使是x[2]<-12这种小操作事实上都是一个重新赋值的过程.

ssh中怎样产生点击一行表格然后按删除会删除掉这行数据

问题描述 ssh中怎样产生在表格中点击一行后会改变当前行的背景颜色表示选定,然后按删除按钮就会将选定的这行数据删除. 解决方案 解决方案二:和ssh有什么关系吗?这个是样式的问题,给tr加上背景色onclick事件点击的时候换背景色解决方案三:改变背景色通过jquery去处理,删除的话还是用jquery去操作dom元素.后台也要删除的话那和平常的做法没区别啊,传个ID到后台delete就行了,就看你想做同步还是异步.解决方案四: 解决方案五:引用2楼wlwlwlwl015的回复: 改变背景色通过

点击事件删除所在行,并在数据库删除这条数据

问题描述 点击事件删除所在行,并在数据库删除这条数据 想这个delete点击事件后,能够删除这条数据 解决方案 前台页面的删除,你可以删除元素,也可以删除后重新加载页面,之后删除这条数据么,把id传到后台,delete form where id=? 就可以了,没懂你哪里不会 解决方案二: 这些不都是有系统方法可以实现的吗?有不懂的直接查方法就好! 解决方案三: 我觉得是这样,点击后生成一个sql语句,然后发到数据库,删除记录. 解决方案四: 在事件中,产生一个SQL删除语句,并执行即可. 解决

asp实现获取MSSQL数据库表指定条件行数的函数

 这篇文章主要介绍了asp实现获取MSSQL数据库表指定条件行数的函数的的相关资料,需要的朋友可以参考下       代码如下: '数据库表行数函数,这是取表的行数 Function GetTblRows(TblName) '如果TblName表名值为空,则 if TblName="" Then GetTblRows="未知TblName" exit Function Else set rec = server.createobject("adodb.re

JavaScript通过事件代理高亮显示表格行的方法

  本文实例讲述了JavaScript通过事件代理高亮显示表格行的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

canvas如何响应鼠标事件删除不规则图形

问题描述 canvas如何响应鼠标事件删除不规则图形 首先,这个canvas有背景色. 其次,我已写好一个画图函数.每次点击鼠标,就能在鼠标的位置添加一个不规则图形. 这时,能否通过在已建立的不规则图形上再次点击鼠标,而把该图形删除. 同时,canvas的背景色不受影响,或许和该图形叠加的其他图形也不受影响. 我的思路是这样的. 0)将我的不规则图形看作尽可能大的矩形,用这个矩形来近似处理该不规则图形. 1)用一个队列,记录下每次鼠标的点击位置,也就是每个图形生成的坐标. 2)每次点击鼠标,均进

发送-datagrid中怎么删除选中的行????

问题描述 datagrid中怎么删除选中的行???? 不管是多选,还是单选,在表格上集成的有增加,删除,修改按钮.我现在想问,当我点击某一行的时候,怎么取出来对应行的各个数据?????因为这个datagrid是个集成的框架,不是自己写的table,对里面的语法,还有数据对象取值不知道怎么用,如果能取出来值,我就可以用Ajax发送到后台进行处理.现在就问你,怎么去table对象,row对象,cell对象,语法是什么????????????????????????????????? 解决方案 htt