Question

J'essaie d'interroger ma liste à l'aide de PortalSitemAlovider.Voici mon code:

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;
    }

Je suis capable d'obtenir une colonne de titre d'un seul élément de liste.Mais je ne sais pas comment obtenir d'autres champs de la liste.Disons que j'ai une colonne nommée "Âge".où est-il dans un site sitemapnode?

aucune idée?

Était-ce utile?

La solution

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;
    }

Autres conseils

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top