Radcombobox OnItemRequested触发页面验证

时间:2013-07-08 14:00:09

标签: asp.net webforms telerik

我有一些非常奇怪的事情发生在这里。

我在母版页中有以下RadComboBox和按钮:

 <telerik:RadComboBox ID="rcbPesquisa" runat="server" CausesValidation="false"  ShowToggleImage="false" LoadingMessage="Carregando..." HighlightTemplatedItems="true" OnClientKeyPressing="onKeyPressing" EmptyMessage="Buscar" EnableLoadOnDemand="True" EnableVirtualScrolling="true" OnItemsRequested="rcbPesquisa_ItemsRequested" AllowCustomText="True" AutoPostBack="true" OnSelectedIndexChanged="rcbPesquisa_SelectedIndexChanged" Width="350">
 <asp:Button runat="server" ID="btnExcluir" Text="Excluir" OnClick="btnExcluir_Click" CausesValidation="true" ValidationGroup="Excluir" CssClass="btn" OnClientClick="return confirm('Deseja realmente excluir o registro?');" />

在页面中,我有这个验证器:

<asp:CustomValidator ID="cuvExclusaoRelacionamento" runat="server" ValidationGroup="Excluir"  OnServerValidate="cuvExclusaoRelacionamento_ServerValidate"></asp:CustomValidator>

当我点击组合框并尝试加载它的项目时,会在服务器上调用cuvExclusaoRelacionamento验证器,当然事情会向南移动。 顺便说一句... _vventExclusaoRelacionamento_ServerValidate上的__EventTarget是空的

1 个答案:

答案 0 :(得分:1)

不幸的是,如果没有看到我只猜测的完整代码,我相信由于以下设置,无法解决这个问题:

  1. ValidationGroup="Excluir"分配给输入控件的ValidationGroup属性是验证组,应在控件回发时触发;验证器控件的ValidationGroup属性是分配给它的组的名称;最后,提交控件的ValidationGroup属性(可以是一个按钮,但也可以是输入控件)是在回发到服务器之前验证页面的Validators组的名称。我应该在此时指出,如果验证失败,它将不会回发(服务器端事件处理程序将不会被触发)。鉴于控件的验证组与您的自定义验证器的验证组相同,当控件尝试回发到服务器时(例如,当被点击时)将触发验证器,如果此验证失败则不会回发

  2. AutoPostBack="true"当您将控件设置为自动回发时,它会在更新时回发到服务器。鉴于您有一个OnClick事件,我猜你需要在控件状态发生变化时执行一些服务器端操作。

  3. CausesValidation="true"设置为true时,当控件尝试回发到服务器时,将触发分配给与提交控件相同的“验证组”的所有验证程序。正如我上面所说,如果验证失败,这将阻止回发(意味着不会触发服务器端事件处理程序)。

  4. 根据提供的信息,我猜你可以采取的最佳行动是为控件设置CausesValidation="false"。只要您在其他地方有一个提交按钮(或其他触发回发的控件),并且分配给“Excluir”验证组,仍然可以执行验证。