È possibile utilizzare il metodo del servizio di elenchi web GetListAndView per ottenere gli schemi per la lista e una vista.
Dalla documentazione, se si lascia vuoto il parametro viewName
, verrà restituita la vista predefinita. Quindi, è possibile leggere il nodo <ViewFields></ViewFields>
per l'elenco di campi.
* Edit *
Risulta utilizzando XPath per interrogare il XML restituito è stato più difficile di quanto pensassi ... qui è quello che mi si avvicinò con:
XmlNode result = webService.GetListAndView("My Pictures", string.Empty);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(result.OwnerDocument.NameTable);
nsmgr.AddNamespace("sp", "http://schemas.microsoft.com/sharepoint/soap/");
string xpathQuery = "sp:View/sp:ViewFields/sp:FieldRef";
XmlNodeList nodes = result.SelectNodes(xpathQuery, nsmgr);
for (int i = 0; i < nodes.Count; i++)
{
Console.WriteLine(nodes[i].Attributes["Name"].Value);
}
assomiglia devi avere un XmlNamespaceManager
altrimenti la query non restituisce mai alcun valore. Qualcosa su come specificare lo spazio dei nomi ... Ecco a good reference.
fonte
2010-11-22 19:06:14
sembra interessante, lo proverò ASAP e pubblicherò i risultati –
ViewFields Restituisce i nomi dei campi, quindi ho dovuto ri-featch ogni campo con il suo nome per ottenere il suo nome di visualizzazione, e il secondo problema che ViewFields non vengono visualizzati tutti i campi visualizzati nella vista predefinita del punto di condivisione per quell'elenco (se l'elenco è un elenco di immagini)! qualche idea? –
Ho provato questo per ottenere Fields, System.Xml.XmlNode list = SPListWebService.GetListAndView (xmlnode.Attributes ["Title"]. Value, string.Empty); System.Xml.XmlNodeList visibleColumns = list.SelectNodes ("View/ViewFields/FieldRef"); .... dove ho sbagliato? –