【发布时间】:2013-10-10 10:07:51
【问题描述】:
以下代码仅在选中复选框时才会在 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。
【问题讨论】:
-
这似乎是第三方控件。你用的是什么控件?
-
我编辑了这个问题。抱歉,它是 DevExpress。
-
我会检查以确保您没有在阻止回发的地方启动验证。
-
@JamesJohnson 我为 Page_load 添加了一个断点,似乎在取消选中时它确实再次点击了 Page_load。这是否意味着正在发生回发?
-
@Jaiesh_bhai:是的,如果您在切换复选框后点击了
Page_Load事件,则回发正在发生。在这种情况下,我会确保您不会在代码中的某处重置选中状态。
标签: c# asp.net checkbox devexpress