在服务器端弹出"确定""取消"提示框

最近有一个小项目要完成,一开始做得很顺利,可是到了程序的细致处,就遇到了问题.

要实现当点击"删除"时,则弹出"确定"/"取消"提示框,当"确定"则删除,否则就"取消".

一开始上网到处去查资料,靠,结果都写得不可靠,不是少了这样,就是少了那样.

现整理如下:

环境为:

用GRIDVIEW来显示数据,在数据项后面添加一个TemplateItem,在其中放了一个"LinkButton"用来实现删除,然后把真正实现删除的代码放在Gridview_RowCommand这个事件当中(因为点击GridView里面的控件,会触发这个事件).

思考过程:

1.要想在服务器端实现客户端弹出"确认"/"取消"提示框,就需要去利用Window.Confirm('')这个客户端函数.而这个函数,要么是位于ASPX页面的JS文件或代码中,要么就是要以SCRIPT的形式写在ASPX.CS的代码里,那么,怎么让"删除"按钮去触发它呢?...以下方法实现:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton linkbtn = e.Row.FindControl("linkbtn_delete") as LinkButton;
            //onclick事件必须要有return才可以,否则即使客户端返回FALSE,不给服务器知道,但是服务器没有通过RETURN收到,也会继续执行其后续的操作.
            linkbtn.Attributes.Add("onclick", "return confirmDelete()");
           // linkbtn.Attributes.Add("onclick", "javascript: return window.confirm('Is it your confirmation.....?');");

        }

    }

 

为gridview添加rowdatabound事件,这个事件是在为gridview添加数据行的数据绑定的时候触发.每一个CELL都会触发一次这个事件.当到了LINKBUTTON时,就用以上if语句中的两行代码来为"删除"按钮进行客户端事件注册.

2.虽然为"删除"按钮注册了客户端代码,但是别忘了,这个提示框有两个按钮,怎么获取分别的返回值呢?相关的JS文件如下:

<script language="javascript" type="text/javascript" >
       
     function confirmDelete()
     {
     
        return window.confirm('Is it your confirmation.....?');
     }
    </script>

以前就知道window.confirm()的返回值是true/false,所以一开始一直就在想怎么去获取这两个值,然后来根据不同的值进行不同的操作.可是后来经过高人指定,他说"只有当客户端代码返回true时,才会提交到服务器,如果为false,根本就不会通知服务器".这个时候,就可以绕过返回的值的问题.管他是true还是false,就不用管了....但是一开始,在为"删除"按钮注册客户端代码时,是这样写的:

 linkbtn.Attributes.Add("onclick", "confirmDelete()");

大家可以看到,与上面正确的样式相比,confirmDelete()这个方法前少了一个return....这个高人说"onclick事件"必须要有返回值,所以,必须在confirmDelete()之前加一个return......这个作用就是将window.confirm()的执行结果通过这个return传给服务器端.如果为true,服务器端才继续执行下面的操作,如果为false,就不会向服务器进行通信了......如果confirmDelete()之前不加这个return会是个什么状况呢?....如果不加,服务器就不知道客户端到底是个什么状态,这时,服务器就会去执行其后的语句,也就是执行rowcommand事件的语句.如果你还定义了"删除"按钮自身的Click()服务器代码,那还会在rowcommand事件之前运行这个Click事件.

注意上述代码后面的 // linkbtn.Attributes.Add("onclick", "javascript: return window.confirm('Is it your confirmation.....?');");这样写也可以实现与之前一样的效果,但是就无需在ASPX页面中去添加什么JS代码了.

 

 

注意: linkbtn.Attributes.Add("onclick", "return confirmDelete()");只是为这个名为"linkbtn"的控件注册了一个客户端的事件和相对应的代码,但是什么时候执行呢?...当你在点击了这个控件之后,这个控件就会首先去执行客户端的对应的事件的方法,然后是服务器端对应的事件的方法.并不是在注册的时候就会调用,所以通常这个为控件注册的语句,都会被放在page_load()事件当中.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值