使用C#通过Web服务获取SharePoint列表可见列名称

Ram*_*eef 5 c# sharepoint web-services sharepoint-2007

我想获取sharePoint网站中特定列表的所有可见列(隐藏== false),我试图查看SharePointWebService.Lists.GetList(listName),但找不到任何有用的东西,还检查了列表WebService提供的方法,也没什么新的,

请指教.

Kit*_*nke 5

您可以使用列表Web服务的GetListAndView方法来获取列表和视图的模式.

从文档中,如果将viewName参数保留为空,则将返回默认视图.然后,您可以读取<ViewFields></ViewFields>字段列表的节点.

*编辑*

事实证明使用XPath查询返回的XML比我想象的更难......这是我想出的:

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);
}
Run Code Online (Sandbox Code Playgroud)

看起来你必须有一个XmlNamespaceManager否则你的查询总是不返回任何值.关于指定命名空间的东西...这是一个很好的参考.