Отображать AllItems.aspx как веб-часть? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть сайт Sharepoint с библиотекой документов. Я настроил несколько пользовательских представлений и хотел бы, чтобы пользователи могли выбирать, какое из них им нравится. Это прекрасно работает в представлении «AllItems.aspx», т. Е. Когда я щелкаю по заголовку веб-части, я перехожу на новую страницу с «полной» страницей DocLib.

Однако большинство пользователей получат доступ через сайт портала с вкладками и, следовательно, будут просматривать представление «Веб-часть».

У меня вопрос: есть ли способ отобразить представление AllItems в веб-части? В частности, мне бы хотелось, чтобы в веб-части появилась симпатичная левая панель инструментов (отображающая мои различные виды).

1 Ответ

0 голосов
/ 02 февраля 2012

Вы можете использовать RenderAsHtml () метод представления.

Этот метод возвращает строку HTML, которую вы можете отобразить в своей веб-части. Но будьте осторожны, существует ошибка в отношении идентификаторов контекста.

Я рекомендую использовать следующую функцию для установки идентификатора вручную:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...