gpt4 book ai didi

c# - 使用 SharePoint Web 服务时如何仅返回列表的某些列?

转载 作者:行者123 更新时间:2023-11-30 14:36:57 25 4
gpt4 key购买 nike

SharePoint Web 服务有一个具有以下签名的方法:

 public System.Xml.XmlNode GetListItems(string listName, string viewName, System.Xml.XmlNode query, System.Xml.XmlNode viewFields, string rowLimit, System.Xml.XmlNode queryOptions, string webID) {
object[] results = this.Invoke("GetListItems", new object[] {
listName,
viewName,
query,
viewFields,
rowLimit,
queryOptions,
webID});
return ((System.Xml.XmlNode)(results[0]));
}

我只想返回列表的“ID”和“标题”列,例如“ProductNames”而不是返回所有列。

如何使用这个webmethod来实现只返回某些列?

我正在使用以下返回所有列的方法:

public XmlNode GetListItems(string listName, XmlElement camlQuery)
{
sp.Lists listService = this.getSPListService();

XmlDocument xmlDoc = new XmlDocument();

XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");

XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");

XmlElement foldersEl = xmlDoc.CreateElement("Folder");

if (camlQuery == null) // override default view filters
{
camlQuery = xmlDoc.CreateElement("Query");

camlQuery.InnerXml = "<Where><Gt><FieldRef Name='ID'/><Value Type='Number'>0</Value></Gt></Where>";
}

queryOptions.AppendChild(foldersEl);

return listService.GetListItems(listName, null, camlQuery, ndViewFields, int.MaxValue.ToString(), queryOptions, null);
}

所以,现在我想编写一个新方法,例如:

public XmlNode GetListItems(string listName, XmlElement camlQueryForFilteringRows, bool includeAllColumns, string[] columnNamesToInclude)         
{

}

并用

调用它
var listItems = GetListItems("ProductNames", null, new [] {"ID", "Title"});

我尝试将以下结构添加到 ViewFields 变量,但它仍然返回所有列:

<ViewFields>
<FieldRef Name="ID" />
<FieldRef Name="Title" />
</ViewFields>

谢谢,

最佳答案

尝试这样的事情:

XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");
if (!includeAllColumns)
{
ndViewFields.InnerXml =
string.Join(string.Empty,
columnNamesToInclude
.Select(t1 => string.Format("<FieldRef Name=\"{0}\" />", t1))
.ToArray());
queryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>";
}

ViewFieldsIncludeMandatoryColumns 的组合在过去对我有用。

关于c# - 使用 SharePoint Web 服务时如何仅返回列表的某些列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889900/

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