2013-09-25 42 views
0

我有一个包含n个列数的SharePoint列表。我想获得列表中的第5行,例如使用SharePoint Web服务。我搜索了互联网并找到了一些代码,但很难理解查询语法。我不能指定列表的单行吗?任何建议?使用Sharepoint Web服务获取一行SharePoint列表

+0

如果是sharepoint 2010,您可以使用客户端对象模型。 –

+0

以下任何建议是否对您有所帮助? –

+0

我发现这样的事情,它的工作原理:query.InnerXml = “” + “<值类型= \” 计数器\ “>” +的rowNum +“ “; –

回答

1

SPServices的语法真的不容易。我创建了一个名为SharepointPlus的JavaScript库,允许执行类似SQL的查询。

的JavaScript代码(已加载jQuery和SharepointPlus之后)会是这样的:

var row=5; // I assume that when you say "row #5", you mean the item with the ID = 5 
$SP().list("Name of your list").get({fields:"NameField",where:"ID = "+row}, function(data) { 
    if (data.length===0) alert("The item with ID = "+row+" doesn't exist!") 
    else alert("NameField = "+data[0].getAttribute("NameField")) 
}) 
0

使用SPServices您可以使用下面的代码:

$(window).ready(function() { 

GetItemsFromList(); 
}); 


function GetItemsFromList() 
{ 
$().SPServices({ 
operation: "GetListItems", 
async: false, 
listName: "MyTestList", 
CAMLViewFields: "<ViewFields><FieldRef Name='Title' /><FieldRef Name='Name' /></ViewFields>", 
CAMLQuery: "<Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>5</Value></Eq></Where></Query>", 
completefunc: function (xData, Status) { 
// $(xData.responseXML).SPFilterNode("z:row").each(function() { 
$(xData.responseXML).find("z\\:row,row").each(function() { 
    var liHtml = "<li>" + $(this).attr("ows_Title") + " " + $(this).attr("ows_Name") + "</li>"; 
    $("#tasksUL").append(liHtml); 
    alert(liHtml); 
    }); 
} 
    }); 

} 

在上面的代码我获取id = 5的项目,或者您可以从列表中获取所有项目并从数据表中获取第5行。 您可以通过更改查询到在上面的代码如下得到列表中的所有项目:

CAMLViewFields: "<ViewFields><FieldRef Name='Title' /><FieldRef Name='Name' /></ViewFields>" 

您还可以使用客户端对象模型。以下是使用ECMA脚本的代码:

ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js"); 
function retrieveListItems() 
{ 
    var clientContext = new SP.ClientContext(); 
var siteColl = clientContext.get_site(); 
    var oList = siteColl.get_rootWeb().get_lists().getByTitle('MyTestList'); 

    var camlQuery = new SP.CamlQuery(); 
    camlQuery.set_viewXml("<View><Query><Where><Eq><FieldRef Name='ID' /><Value Type='Number'>5</Value></Eq></Where></Query><ViewFields><FieldRef Name='Title'/></ViewFields></View>"); 
this.collListItem = oList.getItems(camlQuery); 
clientContext.load(collListItem); 
clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 

} 

function onQuerySucceeded(sender, args) 
{ 
var listItemEnumerator = collListItem.getEnumerator(); 
var currentitemtitle = ""; 
while (listItemEnumerator.moveNext()) 
{ 
    var oListItem = listItemEnumerator.get_current(); 
    currentitemtitle = currentitemtitle + oListItem.get_item('Title') ; 


} 


} 
function onQueryFailed(sender, args) 
{ 
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
} 

在上面的代码中,我从列表中获取ID为5的项目。您也可以通过更改上面给出的查询来获取所有项目,然后遍历行获取第5行。

我希望这可以帮助..

相关问题