0

RadAjaxManager を使用して、いくつかの WebForms コントロールを ajax 化しています。ajax は、次の 1 つを除くすべてのシナリオで正常に機能します。

私はLinkBut​​tonを持っています:

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

このvalidateValidation関数は、フォーム コントロールでクライアント側のページ検証を起動falseし、ページが無効な場合にフォームの送信をブロックします。

ページが無効な場合、対象となるすべてのコントロールはRadAjaxManager、検証が完了した後の最初のクリック (のみ) で ajax 要求を起動できません。

その後、ajax化されたコントロールをクリックすると、リクエストが正しく起動されます。また、 1 つのajax 化されたコントロールが 1 回クリックされると、すべての Ajax 化されたコントロールが正しく機能することにも注意してください。ajax 化されていないコントロール (RadAjaxManager の対象外) をクリックしても影響はありません。

RadAjaxManagerまた、単純な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 に答える