从多个列表中获取价值

时间:2016-01-09 14:24:45

标签: sharepoint office365 caml hosted-app

我正在开发SharePoint托管应用,以计算同一网站集下多个列表中的值。我要查找名称相似的列表。

例如:根网站:

/dev 

子网站:

/dev/site1 
/dev/site2 

site1&站点2有名为“timesheet”的列表。
考虑用户1&用户2.每个用户都可以访问这两个子站点。他们更新了两个网站的时间表。

我需要的是我要从站点1和站点1计算时间表列表的字段(记录时间)值。站点2,然后添加它,然后将其存储到根站点列表(单独的列表)。

此外,我还要根据用户过滤值。

Ex:在site1>时间表 - 我要计算当前用户和Site2>创建的项目。时间表 - 计算当前用户创建的项目并将其存储到根站点。

我正在使用caml查询来检索值。但我不知道如何通过caml查询基于当前用户进行过滤。

我的代码

var TimesheetList01 = web01.get_lists().getByTitle('Timesheet');

var camlQuery01 = new SP.CamlQuery();
camlQuery01.set_viewXml("<View><Query><Where></Where></Query></View>");

this.collListItem01 = TimesheetList01.getItems(camlQuery01);
currentcontext01.load(collListItem01, 'Include(Id,LoggedHours)');

currentcontext01.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
             function onQuerySucceeded(sender, args) {
             var mysum01 = 0;
              var myloggedHours01 = 0;
              var listItemInfo01 = '';
             var listItemEnumerator011 = collListItem01.getEnumerator(); 
             while (listItemEnumerator011.moveNext()) {
                var oListItem01 = listItemEnumerator011.get_current();
                  myloggedHours01 = oListItem01.get_item('LoggedHours');
                  mysum01 = mysum01 + myloggedHours01;`

请帮忙。

谢谢,Arun

1 个答案:

答案 0 :(得分:0)

我会更新您的CAML查询中的Where以包含(其中“作者”将是您要过滤的人员字段的内部名称):

<Where>
  <Eq>
     <FieldRef Name='Author' />
     <Value Type='Integer'>
        <UserID />
     </Value>
  </Eq>
</Where>

UserID将解析为当前用户的UserID。