通过当前用户在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