我有一个包含n列的sharepoint列表。我想使用sharepoint web服务获取列表中的第5行。我搜索了互联网并发现了一些代码,但很难理解查询语法。我可以不指定列表的单行吗?有什么建议吗?
答案 0 :(得分: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"))
})
答案 1 :(得分: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行。
我希望这有帮助..