Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过当前用户在SharePoint 2013上使用JavaScript从列表筛选器中检索元素_Javascript_Sharepoint_Sharepoint 2013 - Fatal编程技术网

通过当前用户在SharePoint 2013上使用JavaScript从列表筛选器中检索元素

通过当前用户在SharePoint 2013上使用JavaScript从列表筛选器中检索元素,javascript,sharepoint,sharepoint-2013,Javascript,Sharepoint,Sharepoint 2013,我在试图通过用户获取列表过滤器上的值时遇到了一些问题。现在我得到了一个视图。当我将它们更改为列表时,getItems不是一个函数。getItems(“”)可以工作,但不能过滤 function sharePointReady() { var targetClientContext; var List; var view; targetClientContext = new SP.ClientContext.get_current(); List

我在试图通过用户获取列表过滤器上的值时遇到了一些问题。现在我得到了一个
视图。当我将它们更改为
列表时,getItems
不是一个函数。getItems(“”)
可以工作,但不能过滤

function sharePointReady() {
    var targetClientContext;
    var List;
    var view;

    targetClientContext = new SP.ClientContext.get_current();
    List                = targetClientContext.get_web().get_lists().getByTitle('My Recognitions');
    view                = List.get_views().getByTitle('CurrentUser');
    this.collList       = view.getItems("");

    //Get the list view and load it to client context and execute the batch  
    targetClientContext.load(collList);
    targetClientContext.executeQueryAsync(onRequestSucceeded, onRequestFailed);
}

var value = 0;
var counter = 0;

for (var i = 0; i < 1; i++) {
    function onRequestSucceeded() {
        var listItemEnum = collList.getEnumerator();
        while (listItemEnum.moveNext()) {
            view = listItemEnum.get_current();
            console.log(view.get_item('ID'));
            console.log('Load ' + ++counter);
            value = view.get_item('Value');
            console.log(value);    
        }
        console.log('');
        console.log('Tu puntos son: ' + counter);
        document.getElementById("try").innerHTML = counter + ' Points';
    }
}

function onRequestFailed(sender, args) {
    alert('Error: ' + args.get_message() + '\n' + args.get_stackTrace());
}
函数sharePointReady(){
var targetClientContext;
var列表;
var观点;
targetClientContext=new SP.ClientContext.get_current();
List=targetClientContext.get_web().get_lists().getByTitle(“我的识别”);
视图=列表。获取视图().getByTitle('CurrentUser');
this.collList=view.getItems(“”);
//获取列表视图并将其加载到客户端上下文,然后执行批处理
targetClientContext.load(collList);
targetClientContext.executeQueryAsync(OnRequestSuccessed,onRequestFailed);
}
var值=0;
var计数器=0;
对于(变量i=0;i<1;i++){
函数onRequestSuccessed(){
var listItemEnum=collList.getEnumerator();
while(listItemEnum.moveNext()){
view=listItemEnum.get_current();
console.log(view.get_项('ID');
console.log('Load'+++计数器);
value=view.get_项('value');
console.log(值);
}
控制台日志(“”);
console.log('Tu puntos-son:'+计数器);
document.getElementById(“try”).innerHTML=counter+'Points';
}
}
函数onRequestFailed(发送方,参数){
警报('错误:'+args.get_message()+'\n'+args.get_stackTrace());
}

提前感谢

要基于现有视图获取列表项的视图,您可以通过
view.get_viewQuery()
方法获取视图的基础CAML查询XML

然后,您可以将该字符串输入到新
SP.CamlQuery
对象的视图XML中,您可以将该对象传递到
list.getItems()
以获取结果

 var clientContext = new SP.ClientContext();
 var list = clientContext.get_web().get_lists().getByTitle("My Recognitions");
 var view = list.get_views().getByTitle("CurrentUser");
 clientContext.load(view);
 clientContext.executeQueryAsync(function(){
      var query = view.get_viewQuery();
      var camlQuery = new SP.CamlQuery();
      camlQuery.set_viewXml(query);
      var items = list.getItems(camlQuery);
      clientContext.load(items);
      clientContext.executeQueryAsync(
           function(){
                 var itemEnumerator = items.getEnumerator();
                 var counter = 0;
                 while(itemEnumerator.moveNext()){
                     var item = itemEnumerator.get_current();
                     console.log(item.get_item("ID"));
                     console.log('Load ' + ++counter);
                     console.log(item.get_item("Value"));
                }
                console.log('Tu puntos son: ' + counter);
                document.getElementById("try").innerHTML = counter + ' Points';
           },
           onRequestFailed
      );
 },onRequestFailed);

 function onRequestFailed(sender, args) {
     alert('Error: ' + args.get_message() + '\n' + args.get_stackTrace());
 }

请注意,这需要两个异步调用:一个用于获取视图XML,另一个用于实际获取项目。

要基于现有视图获取列表项目视图,可以通过
view.get\u viewQuery()
方法获取视图的基础CAML查询XML

然后,您可以将该字符串输入到新
SP.CamlQuery
对象的视图XML中,您可以将该对象传递到
list.getItems()
以获取结果

 var clientContext = new SP.ClientContext();
 var list = clientContext.get_web().get_lists().getByTitle("My Recognitions");
 var view = list.get_views().getByTitle("CurrentUser");
 clientContext.load(view);
 clientContext.executeQueryAsync(function(){
      var query = view.get_viewQuery();
      var camlQuery = new SP.CamlQuery();
      camlQuery.set_viewXml(query);
      var items = list.getItems(camlQuery);
      clientContext.load(items);
      clientContext.executeQueryAsync(
           function(){
                 var itemEnumerator = items.getEnumerator();
                 var counter = 0;
                 while(itemEnumerator.moveNext()){
                     var item = itemEnumerator.get_current();
                     console.log(item.get_item("ID"));
                     console.log('Load ' + ++counter);
                     console.log(item.get_item("Value"));
                }
                console.log('Tu puntos son: ' + counter);
                document.getElementById("try").innerHTML = counter + ' Points';
           },
           onRequestFailed
      );
 },onRequestFailed);

 function onRequestFailed(sender, args) {
     alert('Error: ' + args.get_message() + '\n' + args.get_stackTrace());
 }

请注意,这需要两个异步调用:一个用于获取视图XML,另一个用于实际获取项目

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(sharePointReady, "sp.js");

function sharePointReady(){
    getItemsFromView("My Recognitions", "CurrentUser",
        function(items){
             for(var i = 0; i < items.get_count(); i++){
                 var item = items.get_item(i);
                 console.log(item.get_item('Title'));
             }
         },
         function(sender,args){ 
             console.log(args.get_message())
         }
    );
}

function getItemsFromView(listTitle, viewTitle,success,error){
    var ctx = new SP.ClientContext();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var view = list.get_views().getByTitle(viewTitle);
    ctx.load(view,'ViewQuery');
    ctx.executeQueryAsync(
        function() {
            var viewQry = "<View><Query>" + view.get_viewQuery() + "</Query></View>";
            getItems(listTitle,viewQry,success,error);
        },
        error);
}

function getItems(listTitle, queryText,success,error) {
    var ctx = new SP.ClientContext();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var query = new SP.CamlQuery();
    query.set_viewXml(queryText);
    var items = list.getItems(query);
    ctx.load(items);
    ctx.executeQueryAsync(
        function() {
            success(items);
        },
        error
   );
}
</script>

ExecuteOrderLayUntillScriptLoaded(sharePointReady,“sp.js”);
函数sharePointReady(){
getItemsFromView(“我的识别”、“当前用户”,
功能(项目){
对于(var i=0;i
在SharePoint 2013中,如果您只想获取当前用户创建的列表项,我们可以使用REST API和$filter来实现

<script src="http://code.jquery.com/jquery-1.11.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
    var siteURL = _spPageContextInfo.webAbsoluteUrl;
    var listname = "My Recognitions";
    var currentUserId=_spPageContextInfo.userId
    var url = siteURL + "/_api/web/lists/getbytitle('" + listname + "')/items?$filter=Author/Id eq "+currentUserId;
    $.ajax({
        url: url,
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: function (data) {       
            var items = data.d.results;
            $.each(items,function(index,item){
                console.log("Title:"+item.Title);
            });
        },
        error: function (error) {
        console.log(JSON.stringify(error));
        }
    });
});
</script>

$(函数(){
var siteURL=_spPageContextInfo.webAbsoluteUrl;
var listname=“我的认可”;
var currentUserId=\u spPageContextInfo.userId
var url=siteURL+“/”api/web/lists/getbytitle(“+listname+”)/items?$filter=Author/Id eq“+currentUserId;
$.ajax({
url:url,
方法:“获取”,
标题:{“Accept”:“application/json;odata=verbose”},
成功:函数(数据){
var项目=数据和结果;
$。每个(项目、功能(索引、项目){
控制台日志(“标题:+项目标题);
});
},
错误:函数(错误){
log(JSON.stringify(error));
}
});
});

以下代码供您参考

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(sharePointReady, "sp.js");

function sharePointReady(){
    getItemsFromView("My Recognitions", "CurrentUser",
        function(items){
             for(var i = 0; i < items.get_count(); i++){
                 var item = items.get_item(i);
                 console.log(item.get_item('Title'));
             }
         },
         function(sender,args){ 
             console.log(args.get_message())
         }
    );
}

function getItemsFromView(listTitle, viewTitle,success,error){
    var ctx = new SP.ClientContext();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var view = list.get_views().getByTitle(viewTitle);
    ctx.load(view,'ViewQuery');
    ctx.executeQueryAsync(
        function() {
            var viewQry = "<View><Query>" + view.get_viewQuery() + "</Query></View>";
            getItems(listTitle,viewQry,success,error);
        },
        error);
}

function getItems(listTitle, queryText,success,error) {
    var ctx = new SP.ClientContext();
    var list = ctx.get_web().get_lists().getByTitle(listTitle);
    var query = new SP.CamlQuery();
    query.set_viewXml(queryText);
    var items = list.getItems(query);
    ctx.load(items);
    ctx.executeQueryAsync(
        function() {
            success(items);
        },
        error
   );
}
</script>

ExecuteOrderLayUntillScriptLoaded(sharePointReady,“sp.js”);
函数sharePointReady(){
getItemsFromView(“我的识别”、“当前用户”,
功能(项目){
对于(var i=0;i