使用javascript读取Sharepoint List Value并设置为variable

时间:2014-05-30 19:27:14

标签: javascript sharepoint-2010 sharepoint-designer sharepoint-list

我觉得我有一个相当简单的问题,但是每个在线解决方案都非常复杂。我在SharePoint设计师2010中,我不是程序员,但我可以顺利通过。我有一个带有合同编号的SP列表,当您单击合同编号时,它会将您带到该项目。我只想要JavaScript代码来读取列表中的值(通过ID或者然后)并将其存储在变量中。

例如:

var siteUrl = 'https://...';
var itemID = 22;
var TargetListItem;
Function onLoad(){
var context = new SP.ClientContent(siteUrl);
var web = context.get_web().get_lists().getByTitle('Data Call');
var list = web.getItemById(itemID);
context.load(list, 'Contract Number');

var value = list.get_item('Contract Number');

var url = "/sites/... " + value + "...";
return url
}

如果我硬编码值以便返回的URL有一个参数,但是当我设置上面的值时,代码就有效。如果有人有一个非常简单的方法来实现这一点,请告诉我!

1 个答案:

答案 0 :(得分:2)

您缺少SP.ClientContext.executeQueryAsync method 在服务器上异步执行当前待处理请求

SP.ClientContext.executeQueryAsync method具有以下签名:

SP.ClientContext.executeQueryAsync(succeededCallback, failedCallback)

由于它是 async 方法,您无法从方法返回,但必须声明包含返回结果的succeededCallback函数。

使用JSOM等异步API时,通常会使用以下模式:

  • 使用嵌套回调
  • 使用承诺模式

请参阅Asynchronous programming in apps for Office文章,以熟悉SharePoint的异步编程。

以下示例演示了如何使用回调方法获取列表项:

function getItem(listTitle,itemId,success,error){  
   var context = SP.ClientContext.get_current();
   var web = context.get_web();
   var list = web.get_lists().getByTitle(listTitle);
   var listItem = list.getItemById(itemId);
   context.load(listItem);

   context.executeQueryAsync(
   function() {
        success(listItem);
   },
   error
  );
}

实施例

getItem('Data Call', 22,
  function(item){
       var result = item.get_item('Contract Number'); 
  },
  function(sender,args){
       console.log(args.get_message());
  }
);

参考

How to: Create, Update, and Delete List Items Using JavaScript

Asynchronous programming in apps for Office