如何为gridview控件里的“删除”列添加一个确认对话框?网上众说纷纭,大致见到了三种解决方案,现归纳如下:
1、继承Web.IO里的button控件,为其实现一个IPostback的接口用于回调,具体代码之复杂,只有作者自己想体会吧……
2、在gridview的ItemCreated事件中,遍历所有控件,若属于LinkButton类,且CommandName为“Delete”,就将其添加一个属性,具体做法是将遍历到的Control强制类型转化为LinkButton,然后调用其Atributes.Add方法,添加一个onclick事件内含confirm语句,即
lb.Attributes.Add(
"
onclick
"
,
"
return confirm('您真的要删除此行吗?')
"
);
3、目前已知的最简洁的方法,如图,在删除按钮的那一列属性里面,把DeleteText属性设为
<
div id
=
"
de
"
onclick
=
"
JavaScript:return confirm('确定删除吗?')
"
>
删除
</
div
>
这个太强了,赞一个。
可问题是,.net输出的html代码如下:
<
a
href
="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView1','Delete$0')"
style
="color:#4A3C8C;"
><
div
id
="de"
onclick
="JavaScript:return confirm('确定删除吗?')"
>
删除
</
div
></
a
>
仔细想了想,以前用asp直接写的删除标签是这个样子的:
<
a
href
="deleteUser.asp?id=xxx"
onclick
="return confirm('确定删除吗?')"
>
删除
</
a
>
之后,新的问题又来了。如果我们的CommandField中ButtonType是Button的话,这段代码就失效了。我想了下,可以通过将其转换为模板列的方式来解决。
先将该字段转换成模板,然后编辑这个模板列,选中用于删除的Button,将其onClientClick属性设为
return
confirm('您确认删除要删除么?')
本文介绍了三种在ASP.NET GridView控件中实现删除操作前显示确认对话框的方法。包括通过继承Button控件并实现IPostback接口的方式;利用ItemCreated事件为LinkButton添加属性;以及直接设置DeleteText属性为包含JavaScript确认对话框的HTML标签。
790

被折叠的 条评论
为什么被折叠?



