如何为gridview控件里的“删除”列添加一个确认对话框?网上众说纷纭,大致见到了三种解决方案,现归纳如下:
1、继承Web.IO里的button控件,为其实现一个IPostback的接口用于回调,具体代码之复杂,只有作者自己想体会吧……
2、在gridview的RowDataBound事件中,遍历所有子控件,若属于LinkButton类,且CommandName为“Delete”,就调用其Atributes.Add方法,添加一个onclick事件内含confirm语句,即

lb.Attributes.Add( " onclick " " return confirm('您真的要删除此行吗?') " );
这种做法效率低下而且代码十分不雅。

3、目前已知的最简洁的方法,如图,在删除按钮的那一列属性里面,把DeleteText属性设为

< div id = " de "  onclick = " JavaScript:return confirm('确定删除吗?') " > 删除 div >  

这个太强了,赞一个。
为gridview“删除”列添加确认对话框_第1张图片
可问题是,.net输出的html代码如下:

< href ="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView1','Delete$0')"  style ="color:#4A3C8C;" >< div  id ="de"  onclick ="JavaScript:return confirm('确定删除吗?')" > 删除 div > a >  
为什么内层
的onclick事件所返回的bool值能影响到外层标签的的语句是否被执行呢?
仔细想了想,以前用asp直接写的删除标签是这个样子的:
< href ="deleteUser.asp?id=xxx"   onclick ="return confirm('确定删除吗?')" > 删除 a >  
也就是说,onclick事件接受一个bool值,其决定了click事件是否被触发。若click事件没有被触发,href内含的跳转动作就不会生效。同理,之前的那段代码中,