Pergunta

Estou tentando consultar minha lista usando PortalSiteMapProvider.Aqui é o meu Código:

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

Eu sou capaz de conseguir o Título da Coluna de um único item da lista.Mas eu não sei como conseguir que outros campos na lista.Vamos dizer que eu tenho uma coluna chamada "idade".onde é que está em um SiteMapNode ?

Alguma Idéia?

Foi útil?

Solução

Eu vi uma Demonstração no CodePlex em : http://spquerydemo.codeplex.com .Apresenta um extenso código de exemplo para muitas formas de consulta do SharePoint.

Eu encontrei a solução.

Esse Código Funciona como uma barreira de contenção.Em vez de "SiteMapNode" objeto que você precisa "PortalListItemSiteMapNode" por indexador para o trabalho.

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

Outras dicas

Você pode usar Item propriedade de SiteMapNode obtém ou define um atributo personalizado a partir da coleção de Atributos ou de um recurso de seqüência de caracteres com base na chave especificada!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top