2

我的页面上有以下复选框:

<asp:CheckBox ID="rbBuilding" runat="server" AutoPostBack="True" OnCheckedChanged="HandlerPackageOnCheckedChanged" Checked="True" CausesValidation="False"   />
<asp:CheckBox ID="rbContent" runat="server" AutoPostBack="True" OnCheckedChanged="HandlerPackageOnCheckedChanged" CausesValidation="False" />

有一个基于单击复选框组合的回发逻辑。除一种情况外,一切正常:

我正在打开额外的 Telerik radwindow,它在自己的验证组中有一些验证。如果我以任何验证错误关闭窗口,那么第一次单击任何复选框都不会执行 postpack。

只有第一次点击不起作用。下次我点击一切正常。我尝试将复选框添加到他们自己的验证组并将大小写验证更改为 true。但行为完全相同。当我将测试 javascript 方法添加到该复选框的 onclick 时,该方法会被触发而不会出现问题。只是没有回发。

我还尝试在窗口关闭时重置窗口验证组的所有验证器,它们被重置,但行为未检查,第一次单击不起作用。

更新

我又做了一次检查,并意识到只有在我使用 javascript 时才会发生这种情况:

window.Page_ClientValidate("MyGroup")

在对弹出窗口进行一些计算之前,我必须这样做。在动态验证器期间,当更新可验证控件时,一切都正常工作,即使验证失败。所以问题是 *Page_ClientValidate*

4

1 回答 1

2

我知道这是一个老问题,但我遇到了几乎确切的问题,并且由于以下链接,我能够解决该问题:

回发问题并单击控件两次

我最终将此代码添加到我的代码后面,为复选框的单击事件添加一个 javascript 事件处理程序:

Checkbox1.Attributes.Add("onclick", "checkboxChanged();");

然后我添加了以下javascript:

function checkboxChanged(arg1) {
  Page_BlockSubmit = false;
}

在我的情况下,复选框也设置为将 CausesValidation 设置为 false,但我认为此修复不需要这样做。希望这可以帮助某人。

于 2015-03-23T16:28:16.823 回答