2

以下代码仅在选中复选框时才会在 c# 中触发。不是当它再次被取消选中时。这是为什么?

<dx:ASPxCheckBox ID="cbEmail" ClientInstanceName ="cbEmailI" runat="server" CheckState="Unchecked" Text="Hello"  OnCheckedChanged ="onCheckChangedCBEmail" AutoPostBack="true" Width="181px"> 
     <ClientSideEvents ValueChanged="OnValueChangedEmail"  Init="OnValueChangedEmail" /></dx:ASPxCheckBox> 

C#:

 protected void onCheckChangedCBEmail(object sender, EventArgs e)
    { 
        bool isEmailChecked = cbEmail.Checked;
    }

isEmailChecked选中复选框时确实设置为true,但是一旦取消选中,它就不会设置为false。onCheckChangedCBEmail(s,e)取消选中复选框时甚至不调用调试。

正在使用 DevExpress。

4

2 回答 2

0

您可以使用

AutoPostBack="True"

在您的复选框上。这将导致对 Page_Load() 的新调用;

或者您可以使用这样的回调面板。

     <dx:ASPxCallbackPanel runat="server" ID="CallBackPanel" lientInstanceName="CallBackPanel">
                <PanelCollection>
                    <dx:PanelContent ID="PanelContent" runat="server">

                                    <dx:ASPxCheckBox ID="checkboxid" runat="server" Text="Some Text"                                     OnValueChanged="CheckedChanged" AutoPostBack="False" >
                                        <ClientSideEvents CheckedChanged="function(s,e){CallBackPanel.PerformCallback();}"/>
</dx:ASPxCheckBox>
                    </dx:PanelContent>
                </PanelCollection>
            </dx:ASPxCallbackPanel>

和服务器端:

 protected void CheckedChanged(object source, EventArgs e)
于 2015-02-16T07:43:35.547 回答
0

尝试将其属性设置processOnServertrue

更新

将 watch 添加到 check 的 checked 属性中,该属性将被清除。

于 2013-10-03T16:09:34.863 回答