【问题标题】:Radcombobox OnItemRequested firing page validationRadcombobox OnItemRequested 触发页面验证
【发布时间】:2013-07-08 14:00:09
【问题描述】:

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

我在母版页中有以下 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 验证器,当然事情会向南。 顺便说一句... cuvExclusaoRelacionamento_ServerValidate 上的 __EventTarget 为空

【问题讨论】:

    标签: asp.net webforms telerik


    【解决方案1】:

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

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

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

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

    鉴于提供的信息,我猜您可以采取的最佳操作是为控件设置CausesValidation="false"。只要您在其他地方有一个分配给“排除”验证组的提交按钮(或其他触发回发的控件),验证仍然可以执行。

    【讨论】:

    • 但我的组合框有 CausesValidation="false"。当我单击它以加载它的项目时,它会导致验证,在一个甚至与组合框无关的验证组中。这真的很奇怪。我确实发现 __EventTarget 是空的。所以就像发生了一些魔法并搞砸了我的代码
    • 是否有任何 javascript 可以对此有所启发,即 onKeyPressing 的内容是什么?背后的代码是什么?您还有哪些与上述控件相关的其他事件处理程序,页面是否包含 ajax?没错,我之前错过了 CausesValidation="false" 部分,但可能需要更多信息才能为您提供更多有用的帮助。
    • onKeyPressing 只是检查是否按下 Enter 并更改隐藏字段的值。然后在 selectedIndexChanged 上,我检查所述字段的值,以制作一些我认为与此处无关的内容。这里奇怪的部分是 __EventTarget 是空的,就像没有控件发送回发一样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2011-01-24
    相关资源
    最近更新 更多