zoukankan      html  css  js  c++  java
  • 为gridview“删除”列添加确认对话框

    前台控件:OnClientClick = "return confirm('确定要删除此数据吗?')"

    后台: if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                {
                    LinkButton lbtn = e.Row.FindControl("LinkButton1") as LinkButton;
                    lbtn.Attributes.Add("onclick", "return confirm('你确定要删除此数据吗?') ");

    如何为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> 

    这个太强了,赞一个。

    可问题是,.net输出的html代码如下:

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

    之后,新的问题又来了。如果我们的CommandField中ButtonType是Button的话,这段代码就失效了。我想了下,可以通过将其转换为模板列的方式来解决。
    先将该字段转换成模板,然后编辑这个模板列,选中用于删除的Button,将其onClientClick属性设为
    return confirm('您确认删除要删除么?')
    即可。
     
     
     
     
  • 相关阅读:
    UEFI启动 安装win8 win10 及windows server 2012 最简单的方法
    Android SDK中国在线更新镜像服务器 解决GOOGLE更新无法下载 更新失败的问题
    DELPHI 单元文件结构
    获取程序自身大小的2个函数
    实时获取网络时间 并转换为北京时间的函数
    部署maven的一些要点、遇到的问题
    cron表达式详解
    redhat安装xwindow环境
    tomcat执行文件权限
    一个方便的java分页算法
  • 原文地址:https://www.cnblogs.com/LifeKingcn/p/2612750.html
Copyright © 2011-2022 走看看