Sharepoint 是否将AllItems.aspx显示为Web部件?

Sharepoint 是否将AllItems.aspx显示为Web部件?,sharepoint,web-parts,sharepointdocumentlibrary,Sharepoint,Web Parts,Sharepointdocumentlibrary,我有一个带有文档库的Sharepoint网站。我已经设置了一些自定义视图,希望用户能够选择他们喜欢的视图。这在“AllItems.aspx”视图中运行良好,即,当我单击Web部件的标题时,它会将我带到一个新页面,该页面似乎是一个“完整”文档库页面 但是,大多数用户将通过选项卡式门户网站进行访问,因此将改为查看“Web部件”视图 我的问题是:有没有办法在Web部件中显示AllItems视图?具体来说,我希望在Web部件中显示漂亮的左侧工具栏(显示我的各种视图)。您可以使用视图的方法 此方法返回一个

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

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

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

您可以使用视图的方法

此方法返回一个HTML字符串,您可以在Web部件中显示该字符串。但是要小心,上下文ID有一个bug

我建议使用以下功能手动设置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;
}