我使用以下代码来获取具有SPSiteDataQuery的站点中的所有文档的列表,但是它返回了用户未上载的各种文档。将列表过滤为仅用户上传的文档的最佳方法是什么?
我怀疑有一个查询我可以使用,但我不确定我应该使用什么FieldRef来查找用户上传的文件(不是隐藏文件或系统类型文档文件)。
见方法
中的***感谢
protected DataTable GetListDataSPSiteDataQuery(string siteUrl, bool recursive, ref string error) {
DataTable results = null;
using (SPSite site = new SPSite(siteUrl)) {
SPWeb web = site.OpenWeb();
SPSiteDataQuery query = new SPSiteDataQuery();
//query.Webs = "<Webs Scope='SiteCollection' />"; //query all web sites in site collection
if (recursive)
query.Webs = "<Webs Scope='Recursive' />";
query.Lists = "<Lists ServerTemplate='101' Hidden='FALSE' MaxListsLimit='0' />";
//query.Lists = "<Lists BaseType='1' MaxListsLimit='0' />"; //document library only (0=generic list, 1=doc library,3=discussino forum,4-vote or survey,5=issues list)
// *** can i provide a query here to filter for the documents i am interested in?
query.Query = string.Empty;
//query.Query = "<Where>" +
// "<Gt>" +
// "<FieldRef Name='File_x0020' />" +
// "<Value Type='Number'>0</Value>" +
// "</Gt>" +
// "</Where>";
query.ViewFields = _viewFields;
results = web.GetSiteData(query);
}
return results;
}
答案 0 :(得分:1)
CAML query builder之类的功能可以帮助您构建有效的查询。
答案 1 :(得分:1)
我现在不在办公室进行测试,但尝试在结果中添加以下字段(这样您就可以看到它们是否创建了可过滤的模式)
如果这没有帮助,我会尝试进行测试,但我不认为除了这些属性之外,房间里还有大象说ONLY_USER_CREATED。如果“用户未上传的各种文档”只是/ forms /文件夹文件(AllItems.aspx,EditItem.aspx等),那么可以使用一些Contains测试来解决它。
答案 2 :(得分:0)
尝试:
query.Query = @"<Where>
<Eq>
<FieldRef Name='Author' />
<Value Type='User'>Bob Smith</Value>
</Eq>
</Where>";