0

我正在使用 RadAjaxManager 来 ajaxify 一些 WebForms 控件。ajax 在所有情况下都可以正常工作,除了一种:

我有一个链接按钮:

<asp:LinkButton ID="lnkSaveButton" 
                    Text="Save" 
                    OnClick="lnkSaveButton_Click"
                    OnClientClick="if ( ! validateValidation()) return false;"
                    runat="server" />

validateValidation函数在我的表单控件上触发一些客户端页面验证,false如果页面无效,它会返回以阻止表单提交。

在页面无效的情况下,RadAjaxManager验证完成后,所有目标控件都无法在第一次单击时(仅)触发其 ajax 请求。

随后对 ajaxified 控件的任何单击都会正确触发请求。还值得注意的是,在单击一个ajaxified 控件后,所有Ajaxified 控件都可以正常工作。单击任何非 ajaxified 控件(不是 RadAjaxManager 的目标)没有任何影响。

还值得注意的是,如果我RadAjaxManager用 simple RadAjaxPanels 替换,我会得到与上述完全相同的结果。

发生了什么事,我该如何解决?

4

1 回答 1

0
  • 确保您没有添加包含 RadAjaxPanel 控件的 AjaxSettings

  • 确保没有抛出任何脚本错误,尤其是验证时

  • 如果验证成功,请尝试在客户端处理程序中调用ajaxRequsetWithTarget ,例如:

        <telerik:RadCodeBlock runat="server" ID="RadCodeBlock1">
            <script>
                function validateValidation() {
                    var validatinPassed = true;
                    $find("<%=RadAjaxManager.GetCurrent(Page).ClientID%>").ajaxRequestWithTarget('<%= lnkSaveButton.UniqueID %>', '');
                    return false;
                }
            </script>
        </telerik:RadCodeBlock>
        <asp:LinkButton ID="lnkSaveButton"
                        Text="Save"
                        OnClick="lnkSaveButton_Click"
                        OnClientClick="if (! validateValidation())
                            return false;"
                        runat="server" />
        <asp:Label ID="Label1" Text="text" runat="server" />
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="lnkSaveButton">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="lnkSaveButton" />
                        <telerik:AjaxUpdatedControl ControlID="Label1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
    

    和一个用于测试的样本处理程序

    protected void lnkSaveButton_Click(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToString();
    }
    
于 2016-06-21T14:02:33.140 回答