gpt4 book ai didi

sharepoint - 如何仅获取列表属性中显示的共享点列表列?

转载 作者:行者123 更新时间:2023-12-02 02:11:31 25 4
gpt4 key购买 nike

我正在使用 Sharepoint 2010 的网络服务界面来尝试获取给定列表的列。使用 GetList() 调用获取所有列没有问题,但问题是我只需要获取用户可以在 Sharepoint UI 的“列表设置” View 中看到的列。

我目前使用的代码如下:

rootNode = serviceReference.GetList(List_id.ToString());
Element element = XElement.Parse(rootNode.OuterXml);
var fields = from e in element.Descendants()
where e.Name.LocalName == "Field" && e.Attribute("ID") != null &&
!(e.Attribute("Name").Value.StartsWith("_") && e.Attribute("SourceID").Value == "http://schemas.microsoft.com/sharepoint/v3")
select e;

其中 serviceReference 是 Sharepoint 列表服务的实例,List_id 是代表 Sharepoint 内部列表的 GUID。

这确实过滤掉了一些我不想要的列,但它并没有去掉所有的东西。

有谁知道我正在寻找哪些属性以将其缩小到用户可以选择添加到 View 的属性?还是我的做法完全错误?

非常感谢您的帮助。

最佳答案

答案是我确实在错误的地方寻找我需要的信息。正如 user823959 指出的那样,我需要获取内容类型定义并使用其中的字段而不是列表本身。

要做到这一点是一个两阶段的过程,首先我们需要使用 Lists.GetListContentTypes 方法获取内容类型列表(虽然这需要一个内容类型 id 参数,但实际上我们在这里放什么似乎并不重要)

    XmlNode rootNode = serviceReference.GetListContentTypes(List_id.ToString(), "0×01");

返回的 CAML 包含列表中可用的每种内容类型的定义 - 返回的第一个内容类型是默认类型(在我的例子中,就是我想要的类型)

    String contentType = rootNode.ChildNodes[0].Attributes["ID"].Value;

一旦我们获得了我们想要的内容类型,我们就可以使用适当的列表内容类型 ID 调用 GetListContentType 以获取内容类型的完整定义:

    XmlNode contentTypeNode = serviceReference.GetListContentType(List_id.ToString(), contentType);

从此调用返回的 CAML 将包含一个字段元素列表,这些元素正确显示在 SharePoint UI 的 View 配置中可用的字段。可以像这样在 LINQ 查询中选择它们:

    XElement contentTypesElement = XElement.Parse(contentTypeNode.OuterXml);

var fields = from e in contentTypesElement.Descendants()
where e.Name.LocalName == "Field"
select e;

至此,我们得到了一个 Field XML 元素列表,其中包含有关显示名称、静态名称、内容类型等的信息。参见 Microsoft's documentation on the Lists.GetListContentType页面以获取有关每个字段返回的信息范围的更多信息。

非常感谢 user823959 为我指明了正确的方向。

关于sharepoint - 如何仅获取列表属性中显示的共享点列表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com