1

XsltListViewWebPart コントロールを SharePoint アプリケーションに動的に追加しようとしています。Page_Load で ShowDocumentList(pnlAdminCurrentDocuments) を実行すると、すべて正常に動作します。

ただし、ajax リクエストで同じ関数を呼び出すと、コントロールは読み込まれますが、イベントは発生しません (つまり、並べ替え、ツリー ビューの展開など)。

XsltListViewWebPart wp;

    private void ShowDocumentList(Panel panel)
    {
        try
        {
            ShowMessage("<p>No documents to show</p>");

            string meetingURL = "http://rl01/sites/nmc/FullMonty";
            string meetingId = "6d39de81-a7f7-4cff-9c94-5d2893526dc5";

            if (!string.IsNullOrEmpty(meetingURL) && !string.IsNullOrEmpty(meetingId))
            {
                using (SPSite site = new SPSite(meetingURL))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists.TryGetList("Meeting Documents");

                        if (list == null)
                            return;

                        SPView view = null;

                        try
                        {
                            view = list.Views["Submitted"];
                            //view = list.Views[0];
                        }
                        catch { }

                        if (view == null)
                        {
                            //todo - replace with toolbx message
                            ShowMessage("Cannot view documents");
                        }
                        else
                        {

                            wp = new XsltListViewWebPart();
                            wp.ChromeType = PartChromeType.None;
                            wp.ListId = list.ID;
                            wp.ViewGuid = view.ID.ToString();
                            wp.WebId = web.ID;


                            wp.XmlDefinition = view.GetViewXml();
                            wp.XmlDefinition = wp.XmlDefinition.Replace("MEETING_ID", meetingId);

                            //SetToolbarContext(web);

                            panel.Controls.Clear();
                            panel.Controls.Add(wp);
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            ShowMessage("");
        }
    }

関数は実際にデータを取得し、すべてを実行しますが、リスト ビューのクライアント側の機能はどれも機能しません。列名の上にマウスを置いても、JavaScript エラーがスローされます。ajax を使用せずに完全なポストバックでコントロールを追加すると、すべてが期待どおりに機能します。

protected void radAjaxMgr_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
    {
        ShowDocumentList(pnlAdminCurrentDocuments);
    }

HTMLマークアップは次のとおりです

<telerik:RadAjaxManager ID="radAjaxMgr" runat="server" OnAjaxRequest="radAjaxMgr_AjaxRequest">
</telerik:RadAjaxManager>
<asp:UpdatePanel runat="server" ID="pnl1">
                                    <ContentTemplate>
                                        <asp:Panel ID="pnlAdminCurrentDocuments" runat="server" CssClass="i3q_DocumentListHldr submittedDocsPanel">
                                        </asp:Panel>
                                    </ContentTemplate>
                                </asp:UpdatePanel>

ajax 呼び出しを発生させる Javascript 関数

function test()
    {
        var ajaxMgr = $find("<%= RadAjaxManager.GetCurrent(this).ClientID %>");

        if (ajaxMgr)
        {
            ajaxMgr.ajaxRequest("Name1;Value1");
        }
    }

前もって感謝します :-)

4

0 に答える 0