Ottieni valori di campo dal sitoEmapnode quando si ottiene gli elementi da PortaliSiteMapprovider
-
10-12-2019 - |
Domanda
Sto cercando di interrogare la mia lista usando PortaliTeMapprovider.Ecco il mio codice:
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;
}
.
Sono in grado di ottenere la colonna del titolo di un singolo elemento di elenco.Ma non so come ottenere altri campi nella lista.Diciamo che ho una colonna denominata "Età".dov'è in un sitemapnode?
Qualche idea?
Soluzione
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;
}
Altri suggerimenti
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!