Obter valores de campo de SiteMapNode quando ficar Itens de PortalSiteMapProvider
-
10-12-2019 - |
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?
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!