将 AllItems.aspx 显示为 Web 部件?

Posted

技术标签:

【中文标题】将 AllItems.aspx 显示为 Web 部件?【英文标题】:Displaying the AllItems.aspx as a Web Part? 【发布时间】:2012-02-25 02:36:28 【问题描述】:

我有一个带有文档库的 Sharepoint 站点。我已经设置了一些自定义视图,并希望用户能够选择他们喜欢的视图。这在“AllItems.aspx”“视图”中运行良好 - 即,当我单击 Web 部件的标题时,它会将我带到一个新页面,其中似乎是一个“完整”的 DocLib 页面。

但是,大多数用户将通过选项卡式门户网站进行访问,因此将改为查看“Web 部件”视图。

我的问题是:有没有办法在 Web 部件中显示 AllItems 视图?具体来说,我希望漂亮的左侧工具栏(显示我的各种视图)出现在 Web 部件中。

【问题讨论】:

【参考方案1】:

您可以使用视图的RenderAshtml() 方法。

此方法返回一个 HTML 字符串,您可以在 Web 部件中显示该字符串。但请注意,上下文 ID 存在错误。

我建议使用以下函数手动设置 ID:

public static String RenderAsHtmlWithFix(SPView view, uint id)

    String html = String.Empty;
    if (view != null)
    
        html = view.RenderAsHtml();
        String ctxIDString;
        int ctxID;
        GetCtxID(html, out ctxIDString, out ctxID);
        if (Int32.TryParse(ctxIDString, out ctxID))
        
            html = html.Replace("ctx" + ctxID, "ctx" + id);
            html = html.Replace("ctxId = " + ctxID, "ctxId= " + id);
            html = html.Replace("CtxNum=\"" + ctxID + "\"", "CtxNum=\"" + id + "\"");
            html = html.Replace("FilterIframe" + ctxID, "FilterIframe" + id);
            html = html.Replace("titl" + ctxID + "-", "titl" + id + "-");
            html = html.Replace("tbod" + ctxID + "-", "tbod" + id + "-");
            html = html.Replace("foot" + ctxID + "-", "foot" + id + "-");
            html = html.Replace("up('" + ctxID + "-", "up('" + id + "-");
            html = html.Replace("img_" + ctxID + "-", "img_" + id + "-");          
        
    
    return html;


private static void GetCtxID(String html, out String ctxIDString, out int ctxID)

    int idIndex = html.IndexOf("ctxId =");
    ctxIDString = String.Empty;
    for (int i = idIndex + 7; html[i] != ';'; i++)
    
        ctxIDString += html[i];
    
    ctxIDString = ctxIDString.Trim();
    ctxID = 1;

【讨论】:

以上是关于将 AllItems.aspx 显示为 Web 部件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SpFx 自定义现代页面

在操作中为请求的其余部分设置文化

sharepoint打开解决方案库

[存储记录]SharePoint循环删除任务

Sharepoint 自定义列表代码隐藏未在嵌入页面上调用

Eclipse Indigo 无法在外部 Web 浏览器上运行 PHP 页面