最近遇到一些问题,用layer提示消息框,比如删除时,提示消息确定后 return false时,则不管用了,因为layer不支持阻塞,下面就解决一下这个问题:
删除按钮代码:
<asp:Button ID="btnDel" name="btnDel" runat="server" Text="删除" class="btn btn-gray" OnClientClick="return resDel();" OnClick="btnDel_Click" UseSubmitBehavior="false" />
1 function layerConfirm(msg, eventTarget, eventArgument) { 2 layer.confirm(msg, function (index) { 3 __doPostBack(eventTarget, eventArgument); 4 5 }); 6 7 }
以下为详细解析:
js的代码:
<script type="text/javascript"> function resDel() { layer.confirm("您确定要删除吗?", function (index) { __doPostBack(‘btnDel‘, ‘1‘); }); } </script>
后台删除按钮事件代码:
1 /// <summary> 2 /// 删除按钮事件 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 protected void btnDel_Click(object sender, EventArgs e) 7 { 8 string select = CRequest.GetString("selectid"); 9 if (select.Trim() == "") 10 { 11 Jscript.Alert("您没有选择数据!", this.Page); 12 return; 13 } 14 if (_user.DepartmentTypeId == (int)AdminDepartmentTypeEnums.Manager || _user.IsGroupLeader) 15 { 16 FriendlyLink.DeleteAll(string.Format("Id in({0})", select)); 17 Jscript.AlertAndRedirect("删除成功!", this.Request.RawUrl); 18 } 19 else 20 { 21 Jscript.Alert("您没有权限删除!", this.Page); 22 return; 23 } 24 }
这时还要在Page_load里添加回调的判断语句(代码如下):
1 string controlName = Request.Params.Get("__EVENTTARGET");//eventTarget为要提交到后台事件的控件name 2 string eventArgument = Request.Params.Get("__EVENTARGUMENT");//用此参数判断按钮是否被点击(参数值可随意写) 3 if (controlName == "btnDel" && eventArgument == "1")//判断两个参数是否满足对应的数据,如满足则调用事件 4 { 5 btnDel_Click(sender, e); 6 }
这时执行会发现
页面报这个错误
原文:http://www.cnblogs.com/liuyanpeng/p/5017315.html