单条及批量删除

相信在学习C#或者在做项目的时候,都会遇到删除数据的问题,删除单条数据显然是不够的,在庞大的数据面前,单条数据删除就显得微不足道了,一条一条的删除实在费劲。所以多条数据删除也就是批量删除就可以实现这些问题,给大家看一下我学习的案例,先来讲一下单条数据删除
单条及批量删除
文章图片

在MVC增删查改的时候也讲过,把要删除的一条数据查询出来,就可以直接移除了。这是很简单的单条数据删除。接下来就是批量删除,批量删除不同的是,不仅仅可以删除一条数据,还可以进行多条删除。
单条及批量删除
文章图片

首先要获取选中行的数据,在这里面我使用的监听单击事件,当我点击选中行的时候,就可以获取到选中行的数据。同样的,可以选中多条数据,如果是这样,只要选中大于0的数据就可以满足条件。先设置一个空字符串的变量接收数据,在for循环里面把要删除的数据的ID拼接起来,每一个ID后面加分号; 隔开。
然后把拼接好的ID用substring()的方法进行提取,substring(start,stop) 方法用于提取字符串中介于两个指定下标之间的字符。返回的字符串包括开始的位置,但不包括结束的位置。开始的位置索引为0,长度比如为10,那么结束的位置就要10-1为9,因为(0,9)从0开始到9,长度就是10。所以它的长度要减一。也就相当于去掉最后一个分号;。
一个询问提示框,然后再把选中行的长度拼接上去,然后就是你看到的“您要删除选中多少行?”,
它就是这样来的。再通过$.post请求控制器方法,传数据过去就可以了。
我们再来看一下控制器那边怎么写的,
单条及批量删除
文章图片

控制器接收到传过来的字符串,然后声明一个string类型也可以是空的变量,用来装提示信息的字符。还有就是int整型的变量,用来记录删除成功或者失败的数据条数。
判断传过来的数据不为空之后,对拼接的ID进行分割,声明一个string的数组[],用来装分割完成后的数据。以分号; 进行分割,就像上面的一样,如果不去掉最后一个分号;,那么就会出现一个空的字符“ ”,既然是空的字符,到下面就无法进行转换,就会触发异常。分割好之后就是一个字符串数组,我们要遍历每一个字符,为了防止转换失败报错,就使用try,catch来捕捉。
数组里的是字符串类型的数字,所以转换出来之后就是一个int整型的数字,就可以正常作为ID使用。然后就可以通过ID查询出那条数据就可以把它从模型的数据表进行移除。
单条及批量删除
文章图片

同时的不能仅仅删除一张表,相关的表和其他的表如果有关联就会造成数据丢失或者垃圾数据,所以我们要对相关的表也要进行查询和移除数据,移除之后,移除多少条上面记录删除成功的条数就自增多少条,相反就失败多少条。
其实大家有没有发现,批量删除和单条数据删除是一样的,批量删除是在一个for循环里一条一条删除的,只是多的是拼接的方法而已。
然后为什么在控制器里写提示信息的的字符串,明明页面代码已经写有了,为什么在控制器还写呢?
单条及批量删除
文章图片

其实控制器return返回的是提示信息的字段。相同的页面接收到的也是提示信息的字段,字段中记录删除成功和失败的条数,这条数的数据是控制器查询后记录的,所以条数也和提示信息的字段一起传了过去页面,所以真正起到提示作用的是页面。但是控制器没有选中行的长度数据,所以在控制器写了这句代码,实际上在控制器它是为0条的,但是传过去页面后,页面拥有它的数据,就自动填了上去。
【单条及批量删除】如果哪里分析不够恰当或者不清晰的地方请海涵,还可以在评论下面进行点评和指正~

    推荐阅读