|
这个是已知问题,鉴于WebForms的工作原理,这个无法修正。原因如下:==================================
1. 你在客户端修改了MenuCheckBox的状态为true:
- F.ready(function () {
- F('<%=chkTest.ClientID%>').setChecked(true);
- });
复制代码 2. 第一次点击时,客户端修改MenuCheckBox的状态为false。虽然客户端进行了两次状态改变 false(page load stage)->true->false,但是服务器记录的状态却一直是false,服务器端无从得知客户端的两次变化,所以不会触发服务器端事件OnCheckedChanged。
我可以给出两个解决办法,来绕过这个问题。
解决办法一:服务器端设置MenuCheckBox的状态:
===================
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- chkTest.Checked = true;
- }
- }
- protected void chkTest_CheckedChanged(object sender, CheckedEventArgs e)
- {
- PageContext.RegisterStartupScript("alert('check changed');");
- }
复制代码- <form id="form1" runat="server">
- <f:PageManager ID="PageManager1" runat="server" />
- <f:Button ID="btnMenu" Text="中国科学技术大学" EnablePostBack="false" IconFont="Motorcycle" runat="server">
- <Menu runat="server">
- <f:MenuCheckBox runat="server" ID="chkTest" Text="测试复选框" AutoPostBack="true" OnCheckedChanged="chkTest_CheckedChanged"></f:MenuCheckBox>
- </Menu>
- </f:Button>
- </form>
- <script>
- F.ready(function () {
- // ...
- });
- </script>
复制代码
解决办法二:客户端事件,自定义回发:
==============
- <form id="form1" runat="server">
- <f:PageManager ID="PageManager1" runat="server" />
- <f:Button ID="btnMenu" Text="中国科学技术大学" EnablePostBack="false" IconFont="Motorcycle" runat="server">
- <Menu runat="server">
- <f:MenuCheckBox runat="server" ID="chkTest" Text="测试复选框" >
- <Listeners>
- <f:Listener Event="checkchange" Handler="onMenuCheckChange" />
- </Listeners>
- </f:MenuCheckBox>
- </Menu>
- </f:Button>
-
- </form>
- <script>
- F.ready(function () {
- F('<%=chkTest.ClientID%>').setChecked(true);
- });
- function onMenuCheckChange() {
- __doPostBack('', 'chkTest_CheckChange');
- }
- </script>
复制代码- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- }
- else
- {
- if (Request.Form["__EVENTARGUMENT"] == "chkTest_CheckChange")
- {
- PageContext.RegisterStartupScript("alert('checked changed: " + chkTest.Checked + "');");
- }
- }
- }
复制代码
|
|