上星期有写了一篇《ASP.NET
MVC图片管理(上传,预览与体现)
http://www.cnblogs.com/insus/p/4620420.html 它只兑现了上传成效,即时预览以及显示效果。明日我们来达成删除效率。

鉴于图片是以二进制存款和储蓄在数据库中,那样删除是很有益于的。只需删除数据库记录即可。

先在数据库创造1个仓库储存进程:
图片 1

图片 2图片 3

CREATE PROCEDURE [dbo].[usp_ImageStore_Delete]
(
    @ImageStore_nbr INT
)
AS
DELETE FROM [dbo].[ImageStore] WHERE [ImageStore_nbr] = @ImageStore_nbr
GO

View Code

在实体Entity中创设删除方法,程序与数据库沟通。
图片 4

接下去,还亟需在控制器创制Action操作:
图片 5

在#70代码中,由于大家使用链接来完成删除,没有post数据,由此操作不应用品质HttpPost。即使你选用的话,删除会有不行:The
resource cannot be found.
图片 6

好了,在视图中,数据彰显表,添加一列,如下高亮部位:
图片 7

示范一下:

 图片 8

 

少数就删除了,再平常可是了,那样的宏图没有半点人性化,让用户有认同也许后悔的选料。在剔除的链接中,添加多一个参数htmlAttributes:
图片 9

再看看效果:

 图片 10

 
一笔一笔记录删除,就像是有点然则隐,Insus.NET下面做2个批量刨除演示。
完毕那个成效,要求考虑一下,怎么着处理选拔的记录的主键值,收集与储存,以何格局传入至数据中去。ASP.NET
MVC 做铵钮删除:

<input id="Button1" type="button" value="Delete" />

业已不是ASP.NET Form的Web
Control。那是客户端标签,那就选择jQuery已毕吗。

我们依旧按上边的顺序,先在数据库层入手,写存款和储蓄进程或处理传入的字符串初始。由于大家传入的字符串,如“2,5,4,10,25”
,写一个函数,把那些字符转换为一张数据表:
图片 11

好了,写多少个仓库储存进程,是为着批量删减使用的:
图片 12

地点画红线的一部分,便是上边SQL自定义函数的行使。存款和储蓄进度代码:

图片 13图片 14

ALTER PROCEDURE [dbo].[usp_ImageStore_batchDelete]
(
    @MultiPrimaryKeyString NVARCHAR(MAX) 
)
AS
DELETE img FROM [dbo].[ImageStore] AS img 
RIGHT JOIN [dbo].[udf_SplitStringToTable](@MultiPrimaryKeyString,',') AS mpk ON (img.ImageStore_nbr = mpk.Value)

View Code

支出转至ASP.NET MVC,有Entity写批量刨除的措施:
图片 15

 在控制器中,大家创建叁个操作,为jQuery使用:
图片 16

 

Ok,首要的做事还是视图,我们必要修改html和添加jQuery代码,不急一样同等来。添加一个铵钮标签以及Checkbox:
图片 17

实现jQuery代码:
图片 18

运作看看是或不是达到预期效应?
图片 19

没很是,能健康删除记录。可是照旧不曾后悔提醒,让用户确认之后,才正确删除,添加一行代码:
图片 20

重新演示:

 图片 21

 
jQuery Button的风云代码:

图片 22图片 23

 $("#Button1").click(function () {
                var valList = "";
                $('input[name="imgSel"]').each(function () {
                    if (this.checked)
                        valList += ',' + $(this).val();
                });
                valList = valList.length > 0 ? valList.substring(1, valList.length) : "";


                if (valList == "") {
                    alert("Select Delete Records.");
                    return;
                }
                else {
                    if (confirm("All selected records will be delete!") == true) {
                        $.ajax({
                            type: 'POST',
                            url: '/July15/BatchDelete',
                            dataType: 'json',
                            data: JSON.stringify({
                                strPkLists: valList
                            }),
                            contentType: 'application/json; charset=utf-8',
                            success: function (data, textStatus) {
                                alert("Delete成功。");
                                location.reload();
                            },
                            error: function (XMLHttpRequest, textStatus, errorThrown) {
                                alert(errorThrown);
                            }
                        });
                    }
                }
            });

View Code

无论如何,大家开发顺序,均是为着快速与介面友好。上边批理删除,大家是把持有接纳的主键值串连一起传播数据库中,那是为了飞速。不必有程序中循环分别传入数据库中去。在较高级中学一年级些版本的数据库,还有其它一法,也是Insus.NET较常用的艺术。正是把富有选用的主键值放在一个DataTable中,然后把这一个DataTable传入数据库中。

你能够有数据库自定义三个数据类型,这一个项目其实正是DataTable的结构。
图片 24

 

 再创立四个存储进度:
图片 25

在MVC的实业(Entity)中代码参考下边#59~#78,其中#61,62是概念二个DataTable。#64是把字符串根据“,” 分割为阵列。#66~69是循环阵列把值存款和储蓄DataTable中。
图片 26

在控制器中,咱们稍修改一下操作:
图片 27

OK了,最终三个实例动画演示就不上了。跟上面包车型地铁言传身教是一样了。整篇中,只怕还写不够完整。然而Insus.NET所通晓的,均享受于此,望你抱有精通全体收获……

以下内容于二零一四-07-07
14:1玖分添加:
博文发布完之后,才意识还有一个小作用没有实现,正是在表顶放3个全选的checkbox。没有毛病,现补充上来,让其更宏观:
在html修改,添加checkbox:
图片 28

写jQuery代码,也是一定简单:
图片 29

 
此时,那么些供给二个动画片演示:
图片 30

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图