标签: spquery

使用SPQuery检索不同/唯一值的最佳方法是什么?

我有一个看起来像这样的列表:

Movie          Year
-----          ----
Fight Club     1999
The Matrix     1999
Pulp Fiction   1994
Run Code Online (Sandbox Code Playgroud)

使用CAML和SPQuery对象,我需要从Year列中获取一个不同的项目列表,它将填充下拉控件.

在CAML查询中搜索周围似乎没有这样做的方法.我想知道人们是如何实现这一目标的?

sharepoint caml spquery

15
推荐指数
2
解决办法
5万
查看次数

包含结果集中文件夹的CAML查询

我试图写一个CAML查询执行针对特定SPList,范围限定于特定的文件夹,从该点递归,并返回所有listItems中(其中符合标准)和文件夹.

这是查询的代码,它似乎应该工作(格式化为可读性):

SPQuery query = new SPQuery();
query.Query = "
<Where>
    <Or>
        <Contains>
            <FieldRef Name=\"FileRef\" />
            <Value Type=\"Text\">foo</Value>
        </Contains>
        <Eq>
            <FieldRef Name=\"FSObjType\" />
            <Value Type=\"Lookup\">1</Value>
        </Eq>
    </Or>
</Where>";

query.ViewFields = "
<FieldRef Name=\"CustomField1\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField2\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField3\" Nullable=\"TRUE\" />
";

query.RowLimit = 500;
query.ViewAttributes = "Scope=\"RecursiveAll\"";
query.Folder = startingFolder;
DataTable dt = myList.GetItems(query).GetDataTable();
Run Code Online (Sandbox Code Playgroud)

所以 - 这只返回ListItems - 没有文件夹.

如果我从查询中删除其他条件,只留下FSObjType=1,我得到一个COM异常"无法完成此操作.请再试一次."

如果我然后删除ViewFields,只留下Scope=RecursiveAllFSObjType=1,我得到一个空的结果集.

sharepoint caml spquery

11
推荐指数
3
解决办法
5万
查看次数

如何获取SPList中的所有文件夹,然后检查当前用户的"Contribute"权限

我有一个像这样的sharepoint列表:

List
---------Folder 1
-----------------Item 1
-----------------Item 2
---------Folder 2
-----------------Item 1
-----------------Item 2
---------Folder 3
-----------------Item 1
-----------------Item 2
Run Code Online (Sandbox Code Playgroud)
  1. 如何获取所有文件夹List

  2. 如果当前用户有检查后Contribute的权限Folder 1,Folder 2,Folder 3

sharepoint caml spquery

6
推荐指数
1
解决办法
9037
查看次数

按标题字段从sharepoint列表中获取项目,使用Caml或SPQuery忽略关注

我想使用CAML从SharePoint列表中获取数据,并使用标题过滤,使用忽略大小写

<Query>
   <Where>
      <Eq>
         <FieldRef Name='Title' />
         <Value Type='Text'>Car</Value>
      </Eq>
   </Where>
</Query>
Run Code Online (Sandbox Code Playgroud)

但是如果我有一个带标题的项目,那么忽略大小写:carcaml应该返回它我该怎么办呢?

sharepoint moss caml ignore-case spquery

3
推荐指数
1
解决办法
6011
查看次数

SharePoint的List.GetItems(视图)返回所有项目而不是筛选的视图项目

我正在尝试根据视图获取列表中的项目数.到目前为止我尝试的每种方法只返回列表的总计.我已经尝试了搜索时遇到的每一种方法,一切都以相同的结果结束.

这是我尝试过的方法之一:

SPWeb web = SPContext.Current.Web;
SPView view = web.GetViewFromUrl("url to my view");
int count = view.ParentList.GetItems(view).Count;
Run Code Online (Sandbox Code Playgroud)

我的列表有28个项目,但我正在引用的视图过滤它并显示四个项目.我希望我的数量是4,而不是28 - 但28是我一直得到的.

这是我尝试过的另一种方法:

SPSite site = SPContext.Current.Site;
SPWeb web = site.OpenWeb();

SPQuery MyQuery = new SPQuery();
MyQuery.Query = "<Query><Where><Eq><FieldRef Name='strStatus' /><Value Type='Text'>submitted</Value></Eq></Where></Query>";

IEnumerable<SPListItem> results = web.Lists["Requests"].GetItems(MyQuery).Cast<SPListItem>();

// results.Count() is 28...  should be 4
Run Code Online (Sandbox Code Playgroud)

所以在这个方法中,我正在跳过视图并尝试传入CAML查询.在U2U中测试我的查询时,按预期返回四个结果...

更大的图片是我在自定义菜单控件的OnMenuItemDataBound事件处理程序中执行此操作.我不知道这是否会产生重大影响,但我想要的是,每个项目链接到特定列表中的视图,将显示链接旁边该视图中的项目数.

任何想法为什么我得到一个列表总数而不是过滤总数?谢谢!

sharepoint spquery

2
推荐指数
1
解决办法
1万
查看次数

SPQuery和RowLimit

我想要查询的列表中有大约10000多行(Listitems).

我想迭代一个timerJob中的每个项目 - 但我不能一次采取所有这些:对象模型覆盖 - 否,ListView阈值 - 1000 - 在FARM级别,我不能改变它.

我有什么方法可以迭代10000+(像一批)?

sharepoint object-model spquery splistitem sharepoint-2010

2
推荐指数
1
解决办法
3834
查看次数