使用Javascript从Sharepoint列表的列表视图检索项目
这是我的代码:\ 这里的使用Javascript从Sharepoint列表的列表视图检索项目,javascript,sharepoint-2013,sharepoint-designer,Javascript,Sharepoint 2013,Sharepoint Designer,这是我的代码:\ 这里的pranav_list是列表名,Main是该列表的视图 <script type="text/javascript"> function retrieveListViewItems(){ alert('start'); var cc = SP.ClientContext.get_current(); var alllist = cc.get_web().get_lists().getByTitle('pranav_list');
pranav_list
是列表名,Main
是该列表的视图
<script type="text/javascript">
function retrieveListViewItems(){
alert('start');
var cc = SP.ClientContext.get_current();
var alllist = cc.get_web().get_lists().getByTitle('pranav_list');
var view = alllist.get_views().getByTitle('Main');
var caml = new SP.CamlQuery();
caml.set_viewXml('<View><Query><Where><Leq>' +
'<FieldRef Name=\'ID\'/><Value Type=\'Number\'>100</Value>' +
'</Leq></Where></Query><RowLimit>8</RowLimit></View>');
this.list = view.getItems(caml);
cc.load(list);
cc.executeQueryAsync(Function.createDelegate(this,this.QuerySucceeded5),Function.createDelegate(this,this.onQueryFailed));
}
function QuerySucceeded5(){
var listiteminfo='';
var listItemEnumerator = list.getEnumerator();
while(listItemEnumerator.moveNext())
{
var listitem = listItemEnumerator.get_current();
listiteminfo += '\nID:'+ listitem.get_id() +
'\nFirstName:' + listitem.get_item('Title') +
'\nLastName:' + listitem.get_item('LN') +
'\nAge:' + listitem.get_item('Age') +
'\n City:' + listitem.get_item('City');
// alert(listiteminfo.toString());
}
alert(listiteminfo.toString());
}
function onQueryFailed(){
alert("Failed");
}
</script>
函数retrieveListViewItems(){
警报(“启动”);
var cc=SP.ClientContext.get_current();
var alllist=cc.get_web().get_list().getByTitle('pranav_list');
var view=alllist.get_views().getByTitle('Main');
var caml=new SP.CamlQuery();
caml.set_viewXml(“”+
'100' +
'8');
this.list=view.getItems(caml);
cc.负载(列表);
cc.executeQueryAsync(Function.createDelegate(this,this.QuerySucceeded5),Function.createDelegate(this,this.onQueryFailed));
}
函数querySucceed5(){
var listiteminfo='';
var listItemEnumerator=list.getEnumerator();
while(listItemEnumerator.moveNext())
{
var listitem=listItemEnumerator.get_current();
listiteminfo+='\nID:'+listitem.get_id()+
“\nFirstName:”+listitem.get_项目('Title'))+
“\nLastName:”+listitem.get_项('LN'))+
'\nAge:'+listitem.get_项('Age')+
“\n城市:”+listitem.get_项目(“城市”);
//警报(listiteminfo.toString());
}
警报(listiteminfo.toString());
}
函数onQueryFailed(){
警报(“失败”);
}
救命啊> P>由于JSOM API不支持从视图中检索列表项,您可以考虑以下方法:
- 检索视图的CAML查询
- 将该查询提供给
方法SP.List.getItems()
function getItemsFromView(listTitle, viewTitle,success,error)
{
var ctx = SP.ClientContext.get_current();
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 = SP.ClientContext.get_current();
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
);
}
这可能对这里的一些人有所帮助。在我添加检查sp.js是否已加载的行之前,代码对我不起作用
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
function sharePointReady(){
//Code goes here
}
还请注意,我使用了当前站点以外的站点上下文。我的整个解决方案见下文。谢谢瓦迪姆!!!真正的救命恩人。其他示例代码和文档代码不适合我
$(文档).ready(函数(){
//确保在代码运行之前加载了必要的SharePoint脚本文件“sp.js”
SP.SOD.executeFunc('SP.js','SP.ClientContext',sharePointReady);
函数sharePointReady(){
getItemsFromView(“我的列表”、“所有项目”,
功能(项目){
对于(var i=0;i
我尝试过这个方法,如果列表中有大量数据,并且希望从中搜索某些内容,则检索时间太长,性能低下。。我想要一些可以从视图中直接检索项目的东西…不,SharePoint CSOM/JSOM API不支持查询列表视图
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
function sharePointReady(){
//Code goes here
}