2016-09-15 84 views
0

我有一个下拉菜单,当我点击一个项目时,将我重定向到一个网站。使用Javascript在下拉菜单中检索SharePoint列表项目

<select onChange="window.location.href=this.value"> 
    <option value='none' selected>Please Select WebSite...</option> 
    <option value="http://www.Link1.com">Title1</option> 
    <option value="http://www.Link2.com">Title2</option> 
    <option value="http://www.Link3.com">Title3</option> 
</select> 

我想在SharePoint中使用此脚本,我想知道如何从SharePoint列表中检索名称和链接。

我的SharePoint列表被命名为 “WEB”,它有两列:

  • “标题”(文本)
  • “链接”(HREF)
+0

您使用的是哪个版本的SharePoint? – Thriggle

回答

0

该代码从数据列表。 将其粘贴到控制台以查看其工作或脚本编辑器Web部件。

var ctx = SP.ClientContext.get_current(); 
var list = ctx.get_web().get_lists().getByTitle('WEB'); 
var query = SP.CamlQuery.createAllItemsQuery(); 
var items = list.getItems(query); 
ctx.load(items); 
ctx.executeQueryAsync(function() { 
    for (var i = 0; i < items.get_count(); i++) { 
     var item = items.getItemAtIndex(0); 
     var obj = item.get_fieldValues(); 
     console.log(obj); // this is sharepoint list item object 
     console.log(obj.Title); // the Title 
     console.log(obj.Link); // the Link 
    } 
}); 
0

根据您使用的是哪个版本的SharePoint,答案可能会有所不同。我们目前在我们的Production环境中运行SharePoint 2010,并且过去曾使用SPServices库来执行此类操作。你可以找到源代码和文档在这里:

https://spservices.codeplex.com/

一个基本的例子会是这个样子:

var $j10 = $.noConflict(true); 
 

 
$j10(document).ready(function() { 
 

 
    var list = "Current Sites"; 
 

 
    /* Fields within the List you want to utilize or display */ 
 

 
    var fields = "<ViewFields>" + 
 
    "<FieldRef Name='Title' />" + 
 
    "<FieldRef Name='Link' />" + 
 
    "</ViewFields>"; 
 

 
    /* Query parameters for the data set you want to return, in CAML syntax */ 
 

 
    var query = "<Query>" + 
 
    "<OrderBy>" + 
 
    "<FieldRef Name='Title' Ascending='TRUE' />" + 
 
    "</OrderBy>" + 
 
    "</Query>"; 
 

 
    /* Method Call */ 
 

 
    GetListItems(list, fields, query); 
 

 
}); 
 

 
function GetListItems(listName, listFields, listQuery) { 
 
    $j10().SPServices({ 
 

 
    operation: "GetListItems", 
 
    listName: listName, 
 
    CAMLViewFields: listFields, 
 
    CAMLQuery: listQuery, 
 

 
    completefunc: function(xData, Status) { 
 

 
     $j10(xData.responseXML).SPFilterNode("z:row").each(function() { 
 

 
     /* Any processing required for each row of data begins here... */ 
 

 
     /* Get Field Data */ 
 

 
     var name = ($j10(this).attr("ows_SiteName")); 
 
     var url = ($j10(this).attr("ows_Url")); 
 

 
     /* Process and Display Field Data */ 
 

 
     $j10("#yourContainerID").append("<option value='" + url.substr(url.indexOf("#") + 1) + "'>" + name.substr(name.indexOf("#") + 1) + "</option>"); 
 
     }); 
 
    } 
 
    }); 
 
}

为了得到这个运行,需要在页面上注册适当版本的SPServices脚本和jQuery库。这在上面引用的codeplex网站上有详细记录。