SharePointのWebサービスは、以下のシグネチャを持つメソッドがあります:私は、例えば、唯一の「ID」と、私のリストの「タイトル」カラムを返したいのですが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]));
}
をすべての列を返すのではなく、 "ProductNames"。
このWebメソッドを使用して特定の列のみを返す方法を教えてください。私はすべての列を返す以下の方法で使用しています
:
public XmlNode GetListItems(string listName, XmlElement camlQueryForFilteringRows, bool includeAllColumns, string[] columnNamesToInclude)
{
}
と
でそれを呼び出しますので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);
}
は、今私のような新しいメソッドを作成したいのですが
var listItems = GetListItems("ProductNames", null, new [] {"ID", "Title"});
以下の構造をViewFields変数に追加しようとしましたが、それでもすべての列を返します。
の<ViewFields>
<FieldRef Name="ID" />
<FieldRef Name="Title" />
</ViewFields>
おかげで、
私はそれがバグだと思います。ただし、まずViewFieldで指定したフィールドが表示されます。したがって、最初のX列のみを返す回避策を実行する可能性があります。ここで、Xは指定されたViewFieldの数です。 – Heliac