Получите значения поля из Sitemapnode при получении элементов из PortalSiteMAppider

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/92529

Вопрос

Я пытаюсь запрашивать мой список, используя PortalSiteMAppider.Вот мой код:

public List<string> GetChachedItems(string webUrl, SPQuery query)
    {
        SiteMapNodeCollection nodeCollection = new SiteMapNodeCollection();
        PortalSiteMapProvider portalProvider = PortalSiteMapProvider.CurrentNavSiteMapProviderNoEncode;
        PortalWebSiteMapNode webNode = portalProvider.FindSiteMapNode(webUrl) as PortalWebSiteMapNode;
        if (webNode != null)
        {
            nodeCollection = portalProvider.GetCachedListItemsByQuery(
                webNode, "test", query, SPContext.Current.Web);
        }
        List<string> itemCollection = new List<string>();
        foreach(SiteMapNode node in nodeCollection)
        {
            itemCollection.Add(node.Title);
        }
        return itemCollection;
    }
.

Я могу получить заголовок столбец единого элемента списка.Но я не знаю, как получить другие поля в списке.Скажем, у меня есть колонка по имени «возраст».где это в SiteMapnode?

Любая идея?

Это было полезно?

Решение

I saw a Demo in CodePlex at : http://spquerydemo.codeplex.com . It presents an extensive sample code for many ways of querying SharePoint.

I've found the solution.

This Code Works like a BOOM. Instead of "SiteMapNode" object you need "PortalListItemSiteMapNode" for indexer to work.

public List<string> GetChachedItems(string webUrl, SPQuery query)
    {
        SiteMapNodeCollection nodeCollection = new SiteMapNodeCollection();
        PortalSiteMapProvider portalProvider = PortalSiteMapProvider.WebSiteMapProvider;
        PortalWebSiteMapNode webNode = ((PortalSiteMapNode)portalProvider.CurrentNode).WebNode;
        if (webNode != null)
        {
            nodeCollection = portalProvider.GetCachedListItemsByQuery(
                webNode, "test", query, SPContext.Current.Web);
        }
        List<string> itemCollection = new List<string>();

        var listItemNodes = portalProvider.GetCachedListItemsByQuery(
                    webNode,
                    "Test", query, SPContext.Current.Web);

        foreach (PortalListItemSiteMapNode node in nodeCollection)
        {
            itemCollection.Add(node.Title + " " + node["age"]);
        }
        return itemCollection;
    }

Другие советы

You can use Item property of SiteMapNode to gets or sets a custom attribute from the Attributes collection or a resource string based on the specified key!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top