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

标签 javascript sharepoint sharepoint-2013

我在尝试由用户获取列表过滤器上的值时遇到一些问题。现在我得到一个 view.getItems is not a function”,当我将它们更改为 List.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());
}

提前致谢

最佳答案

以下代码供您引用。

<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>

在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>

关于javascript - 在 SharePoint 2013 上使用 JavaScript 按当前用户从列表筛选器中检索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751531/

相关文章:

javascript - 效率 : JS Slider VS animated Gif

javascript - JavaScript 中 isset($_POST ['name' ]) 的等价物是什么?

具有覆盖值的 Javascript 订单函数

sharepoint - Set-SPCustomLayoutsPage 恢复为默认值

javascript - SharePoint 2010 中组织结构图 WebPart 的 VML 问题

javascript - 如何在 JavaScript 中跨多个函数使用全局变量?

javascript - 如何在调用 Ajax 等异步调用时让代码等待

sharepoint - 您如何指示 SharePoint 场在特定服务器上运行计时器作业?

Sharepoint 13 中的 JavaScript 引用

Sharepoint 2013 客户端对象模型文件大于 2 Mb 异常