0

私はUser Controlとを持っていContent Pageます。では、以下のような内部Content Pageを持っています。ユーザーがbyの位置を入れ替えると、 があります。ユーザーは保存ボタンを押して、注文をデータベースに保存します。RadDockLayout controlUpdate panelImage buttonRadDockDrag Drop

<asp:updatepanel id="UpdatePanel1" runat="server">
    <ContentTemplate>
        <telerik:RadDockLayout runat="server" OnLoadDockLayout="RadDockLayout1_LoadDockLayout"
            ID="RadDockLayout1" OnSaveDockLayout="RadDockLayout1_SaveDockLayout">

                        <telerik:RadDockZone runat="server" Orientation="Horizontal" ID="HealthZone" Visible="false"
                            BorderStyle="None" Style="margin: 0;">
                        </telerik:RadDockZone>
                        <telerik:RadDockZone runat="server" Orientation="Horizontal" ID="RadDockZone1" BorderStyle="None"
                            Style="margin: 0; width:540px;">
                        </telerik:RadDockZone>
                        <telerik:RadDockZone runat="server" Orientation="Horizontal" ID="AdZone" Visible="false"
                            BorderStyle="None" Style="margin: 0;" Width="324px">
                        </telerik:RadDockZone>

        </telerik:RadDockLayout>

    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="imgsave" EventName="Click" />
    </Triggers>
</asp:updatepanel>

保存プロセス中に、別の関数を呼び出します。これも下にありUser Controlます。

public void RePopulateOverview(UserControl overviewuc)
{
    RePopulated = true;
    CurrentDockStates.Clear();
    RadAjaxManager AjaxManager = RadAjaxManager.GetCurrent(this.Page);
    AjaxManager.AjaxSettings.Clear();
    AjaxManager.AjaxSettings.AddAjaxSetting(AjaxManager, overviewuc);
    //InitiateAjaxRequest
    RadScriptManager.RegisterStartupScript(this.UpdatePanel1, 
    this.GetType(), "OverviewReLoadScript" + 
    Guid.NewGuid().ToString().Replace("-", "a"), 
    "javascript:InitiateAjaxRequest();", true);
}

以下は、以下のような対応するjavaScript関数です。

<script type="text/javascript">
    function InitiateAjaxRequest() {
        if ($find("<%= Telerik.Web.UI.RadAjaxManager.GetCurrent(this.Page).ClientID %>") != null)
            $find("<%= Telerik.Web.UI.RadAjaxManager.GetCurrent(this.Page).ClientID %>").ajaxRequest();
        else {
            alert("AjaxManager not found..." + $find("<%= Telerik.Web.UI.RadAjaxManager.GetCurrent(this.Page).ClientID %>"));
        }
    } 
</script>

私の問題は、私がpresses Save Button second timeそれcrashesError Message下にあるときです。

AjaxManager が見つかりません...null

4

2 に答える 2

0

このようにする必要があります。

var ID;
function InitiateAjaxRequest() {
    if (ID == null) {
        ID = $find("<%= Telerik.Web.UI.RadAjaxManager.GetCurrent(this.Page).ClientID %>");
        ID.ajaxRequest();
    }
    else
        ID.ajaxRequest();
}
于 2012-04-27T05:58:05.713 に答える
0

回避策としてこれを試してください:

<script type="text/javascript">
    var ajaxMgrInstance = null;
    function InitiateAjaxRequest() {
        if (ajaxMgrInstance == null) {
            ajaxMgrInstance == $find("<%= myRadAjaxManager.ClientID %>");
        }
        if (ajaxMgrInstance != null) {
            ajaxMgrInstance.ajaxRequest();
        }
        else {
            alert("AjaxManager not found..." + "<%= myRadAjaxManager.ClientID %>");
        }
    } 
</script>

その間、問題の根本原因をより正確に突き止めようとします。

編集:$find Telerik の API ドキュメントの構文に一致するように呼び出しを更新しました。

于 2012-04-26T17:33:17.103 に答える