我在尝试由用户获取列表过滤器上的值时遇到一些问题。现在我得到一个 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/