现象:我是前台绑定的多个asp的checkbox,因为需要根据动态模板绑定,所以在后台拼了一个JS打到前台页面底部,通过点击一个checkbox,联动整个模板上需要选中的checkbox,这时候出现两个问题,第一个是前台通过模板控制的checkbox在后台取值与画面上的选中效果不一致,第二个就是在IsPostBack的情况下中间出现check程序return出去的时候,HTML里的JS丢失了,是不是ClientScript.RegisterStartupScript还有什么周期之类的。
下面是代码
<div id="divZuTuanShe" runat="server"> <div style="float: left; margin: 10px 20px 0px 0px"> <b>散客预订</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbGuoNeiXianLu" runat="server" Text="国内线路" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbGuoJiXianLu" runat="server" Text="国际线路" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbZhouBianXianLu" runat="server" Text="周边线路" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbZiYouXing" runat="server" Text="自由行" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px"> <b>订单管理</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbSanKeDingDan" runat="server" Text="散客订单" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbChouKeFenXi" runat="server" Text="收客分析" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px"> <b>财务中心</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbYingFuKuan" runat="server" Text="应付款" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px"> <b>系统管理</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbJiFenGuanLi" runat="server" Text="积分管理" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbGongSiGuanLi" runat="server" Text="公司管理" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbGeRenXinXi" runat="server" Text="个人信息" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbYongHuGuanLi" runat="server" Text="用户管理" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px"> <b>报价单下载</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbBaoJiaDanXiaZai" runat="server" Text="报价单下载" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px"> <b>UTB管理</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbUtbGuanLi" runat="server" Text="UTB管理系统" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbUtbShiYong" runat="server" Text="UTB使用流程" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px"> <b>操作权限</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbTianJia" runat="server" Text="添加" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbShanChu" runat="server" Text="删除" /> </label> <br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbXiuGai" runat="server" Text="修改" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px"> <b>用户区分</b><br /> <label> <asp:CheckBox class="cbAAuthority" ID="cbGuanLiYuan" runat="server" Text="管理员" /> </label> <br /> </div> <div style="float: left; margin: 10px 20px 0px 0px" id="divMoBan" runat="server"> <br /> <label> <asp:CheckBox ID="cbZuTuanShe" runat="server" Text="默认模板" /> </label> <br /> </div> </div>
下面是我绑定JS的代码
strJs.Append(@"<script type='text/javascript'>"); strJs.Append(@" $(function () { "); strJs.Append(@" $(""#cbZuTuanShe"").live(""click"", function () {"); strJs.Append(@" if ($(""#cbZuTuanShe"").is("":checked"")) {"); // 散客预订 if ("1".Equals(dt.Rows[0]["TL0001Flg"].ToString())) { strJs.Append(@" $(""#cbGuoNeiXianLu"").attr(""checked"", true);"); strJs.Append(@" $(""#cbGuoJiXianLu"").attr(""checked"", true);"); strJs.Append(@" $(""#cbZhouBianXianLu"").attr(""checked"", true);"); strJs.Append(@" $(""#cbZiYouXing"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbGuoNeiXianLu"").attr(""checked"", false);"); strJs.Append(@" $(""#cbGuoJiXianLu"").attr(""checked"", false);"); strJs.Append(@" $(""#cbZhouBianXianLu"").attr(""checked"", false);"); strJs.Append(@" $(""#cbZiYouXing"").attr(""checked"", false);"); } // 散客订单 if ("1".Equals(dt.Rows[0]["TO0001Flg"].ToString())) { strJs.Append(@" $(""#cbSanKeDingDan"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbSanKeDingDan"").attr(""checked"", false);"); } // 订单统计 if ("1".Equals(dt.Rows[0]["TO0002Flg"].ToString())) { strJs.Append(@" $(""#cbChouKeFenXi"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbChouKeFenXi"").attr(""checked"", false);"); } // 应付款 if ("1".Equals(dt.Rows[0]["TF0001Flg"].ToString())) { strJs.Append(@" $(""#cbYingFuKuan"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbYingFuKuan"").attr(""checked"", false);"); } // 积分管理 if ("1".Equals(dt.Rows[0]["TA0001Flg"].ToString())) { strJs.Append(@" $(""#cbJiFenGuanLi"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbJiFenGuanLi"").attr(""checked"", false);"); } // 公司管理 if ("1".Equals(dt.Rows[0]["TA0002Flg"].ToString())) { strJs.Append(@" $(""#cbGongSiGuanLi"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbGongSiGuanLi"").attr(""checked"", false);"); } // 个人信息 if ("1".Equals(dt.Rows[0]["TA0003Flg"].ToString())) { strJs.Append(@" $(""#cbGeRenXinXi"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbGeRenXinXi"").attr(""checked"", false);"); } // 用户管理 if ("1".Equals(dt.Rows[0]["TA0004Flg"].ToString())) { strJs.Append(@" $(""#cbYongHuGuanLi"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbYongHuGuanLi"").attr(""checked"", false);"); } // 报价单下载 if ("1".Equals(dt.Rows[0]["TD0001Flg"].ToString())) { strJs.Append(@" $(""#cbBaoJiaDanXiaZai"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbBaoJiaDanXiaZai"").attr(""checked"", false);"); } // UTB管理系统 if ("1".Equals(dt.Rows[0]["TU0001Flg"].ToString())) { strJs.Append(@" $(""#cbUtbGuanLi"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbUtbGuanLi"").attr(""checked"", false);"); } // UTB使用流程 if ("1".Equals(dt.Rows[0]["TU0002Flg"].ToString())) { strJs.Append(@" $(""#cbUtbShiYong"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbUtbShiYong"").attr(""checked"", false);"); } // 添加 if ("1".Equals(dt.Rows[0]["AddFly"].ToString())) { strJs.Append(@" $(""#cbTianJia"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbTianJia"").attr(""checked"", false);"); } // 删除 if ("1".Equals(dt.Rows[0]["DeleteFly"].ToString())) { strJs.Append(@" $(""#cbShanChu"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbShanChu"").attr(""checked"", false);"); } // 修改 if ("1".Equals(dt.Rows[0]["ModifyFly"].ToString())) { strJs.Append(@" $(""#cbXiuGai"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbXiuGai"").attr(""checked"", false);"); } // 管理员 if ("1".Equals(dt.Rows[0]["UserKb"].ToString())) { strJs.Append(@" $(""#cbGuanLiYuan"").attr(""checked"", true);"); } else { strJs.Append(@" $(""#cbGuanLiYuan"").attr(""checked"", false);"); } strJs.Append(@" $("".cbAAuthority input[type='checkbox']"").attr(""disabled"", true);"); strJs.Append(@" } else {"); strJs.Append(@" $("".cbAAuthority input[type='checkbox']"").attr(""checked"", false);"); strJs.Append(@" $("".cbAAuthority input[type='checkbox']"").attr(""disabled"", false);"); strJs.Append(@" }"); strJs.Append(@" });"); strJs.Append(@" });"); strJs.Append(@"</script>");
添加JS用的ClientScript.RegisterStartupScript(this.GetType(), "js", this.MakeZuTuanSheJsString()); 不过只有在初始化页面时候才调用,没有在代码return后重新调用
这俩问题谁能帮忙解决下 找不到原因了
问题标签为啥不能修改呢。。。。
注意页面生命周期。 像联动这类操作, 最好使用ajax去加载。
ajax加载的话前台的所有checkbox也会变成动态的了吧,画面我想要静态的,就是模板联动需要做成动态,就是不太明白为啥JS在画面上绘制的和后台不一致
朋友帮解决了,问题出在那个JS上选中的时候需要其他不可用,如果不可用在后台就获取不到正确的值,可以在button的点击事件上做处理,提前给所有checkbox可用就好使了。