在客户端事件处理程序之后,第一次单击时RadAjax不会触发

时间:2016-06-21 12:55:25

标签: javascript c# asp.net telerik radajaxmanager

我使用RadAjaxManager来调整一些WebForms控件。除了一个之外,ajax在所有场景中都能正常工作:

我有一个LinkBut​​ton:

<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替换RadAjaxPanel,我会得到与上述完全相同的结果。

发生了什么以及如何解决?

1 个答案:

答案 0 :(得分: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();
    }