每个"listItem"都包含项目,如何获取它们?我试了一段时间,但只失败了,
帮助,谢谢
camlQuery来自网络上的一些测试和示例,对没有帮助(有很多更改)
ClientContext clientContext = new ClientContext("http://xxx.xxx.com");
List list = clientContext.Web.Lists.GetById(new Guid("{F91A0F26-2826-4B3B-AF30-ED7DE4494C7B}"));
clientContext.Load(list);
clientContext.ExecuteQuery();
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"<queryOptions><QueryOptions><ViewAttributes Scope='RecursiveAll'/><Folder></Folder></QueryOptions></queryOptions>";
ListItemCollection listItems = list.GetItems(camlQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
foreach (ListItem listItem in listItems)
{
each lisItem has children/items , how to get them?!
}
我找到了答案,感谢帮助者…:)Items
是我创建的对象。要获取"folderServerRelativeUrl"值,可以从(string)listItem ["FileRef"]
当您从每个的上方查看文件夹时
public Items GetFolderItems(string folderServerRelativeUrl, List list, ClientContext clientContext)
{
try
{
var result = new Items(); <-- my class
var query = new CamlQuery();
query.FolderServerRelativeUrl = folderServerRelativeUrl;
query.ViewXml = "<View Scope="RecursiveAll"> " +
"<Query>" +
"<Where>" +
"<Eq>" +
"<FieldRef Name="FileDirRef" />" +
"<Value Type="Text">" + folderServerRelativeUrl + "</Value>" +
"</Eq>" +
"</Where>" +
"</Query>" +
"</View>";
var folderItems = list.GetItems(query);
clientContext.Load(folderItems);
clientContext.ExecuteQuery();
foreach (ListItem item in folderItems)
{
// item[ "..." ];
}
return result;
}
catch (Exception)
{
return null;
}
}
获取列表文件夹中所有项目的另一种方法:
camlQuery.ViewXml = @"<View Scope='RecursiveAll'>
<Query>
<Where>
<Eq>
<FieldRef Name='FSObjType' />
<Value Type='int'>0</Value>
</Eq>
</Where>
</Query>
</View>";
感谢您的回答。只是为了让您知道folderServerRelativeUrl变量应该来自根Url(除了http://server
)。我确实在文档中心有一个名为"供应商"的列表。也就是说,siteUrl是http://server/documentcenter
,列表名称是Vendors。我必须通过"/documentcenter/Vendors/…"作为我的文件夹ServerRelativeUrl。但没关系。我仍然很感激你。
Stack Overflow的伙计们,我无法在他的回答下面添加评论,这太令人难过了。我不得不提交这一评论作为答复。如果可以用不同的方式来做,请帮帮我。我不想修改他的回答。
~ Sharmin