- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Sharepoint Online 2013 通过 JSOM 构建应用程序。当前部分是在将数据提交到列表(工作正常)之后,将打开一个模式,允许用户根据该列表和其他列表创建 PDF。当前的问题是,列表中的数据必须在客户端准备好,然后才能开始将其制作为 PDF,我已经阅读了有关“Promise”方法的文献,这就是我最近一直在尝试的方法成功。
函数 getQuoteDetails() {
var d = $.Deferred(function(){
var ListName = "Quote";
var context = new SP.ClientContext.get_current();
var lstObject = context.get_web().get_lists().getByTitle(ListName);
var camlQuery = new SP.CamlQuery();
//var _valuetofind = $('#QuoteID').text();
var _valuetofind = '1';
camlQuery.set_viewXml("<View><ViewFields>" +
"<FieldRef Name='Q_ID' />" +
"<FieldRef Name='CPY_ID' />" +
"<FieldRef Name='CUST_ID' />" +
"<FieldRef Name='Q_RaiseDate' />" +
"<FieldRef Name='Q_DueDate' />" +
"<FieldRef Name='Q_Price' />" +
"<FieldRef Name='Q_GST' />" +
"<FieldRef Name='Q_TotalPrice' />" +
"<FieldRef Name='Q_PurchaseOrder' />" +
"</ViewFields>" +
"<Query><Where><Contains>" +
"<FieldRef Name='Q_ID'/>" +
"<Value Type='Number'>" + _valuetofind + "</Value></Contains></Where></Query></View>");
var listItemCollection = lstObject.getItems(camlQuery);
context.load(listItemCollection, "Include(Q_ID, CPY_ID, CUST_ID, Q_RaiseDate, Q_DueDate, Q_Price, Q_GST, Q_TotalPrice, Q_PurchaseOrder)");
context.executeQueryAsync(onGetItemsSuccess, onGetItemsFail);
function onGetItemsSuccess(sender, args) {
var listItemEnumerator = listItemCollection.getEnumerator();
while (listItemEnumerator.moveNext()) {
var quotearray = [];
quotearray['Q_ID'] = listItemEnumerator.get_current().get_item('Q_ID');
quotearray['CPY_ID'] = listItemEnumerator.get_current().get_item('CPY_ID');
quotearray['CUST_ID'] = listItemEnumerator.get_current().get_item('CUST_ID');
quotearray['Q_RasiedDate'] = listItemEnumerator.get_current().get_item('Q_RasiedDate');
quotearray['Q_DueDate'] = listItemEnumerator.get_current().get_item('Q_DueDate');
quotearray['Q_Price'] = listItemEnumerator.get_current().get_item('Q_Price');
quotearray['Q_GST'] = listItemEnumerator.get_current().get_item('Q_GST');
quotearray['Q_TotalPrice'] = listItemEnumerator.get_current().get_item('Q_TotalPrice');
quotearray['Q_PurchaseOrder'] = listItemEnumerator.get_current().get_item('Q_PurchaseOrder');
}
d.resolve(quotearray);
}
function onGetItemsFail(sender, args) {
alert('Failed to get items. Error: ' + args.get_message());
}
});
return d.promise();
}
然后调用此代码:
函数 CreateQuotePDF() {
getQuoteDetails().done(function (quotearray) {
var quotedetails = quotearray;
alert('Nothing'); <---- quotedetails is undefined at this point
});
警报('什么都没有'); <---- quotedetails 此时未定义}
希望您能帮忙!
最佳答案
一些建议
Deferred
对象在 jQuery 1.5 中引入ViewFields
以及 SP.ClientContext.load
函数的第二个参数的值同时,因为它们都用于指定要检索的属性话虽如此,我建议您使用以下更通用的方法来获取列表项:
function getListItems(listTitle,propertiesToInclude)
{
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle(listTitle);
var items = list.getItems(SP.CamlQuery.createAllItemsQuery());
var includeExpr = 'Include(' + propertiesToInclude.join(',') + ')';
ctx.load(items,includeExpr);
var d = $.Deferred();
ctx.executeQueryAsync(function() {
var result = items.get_data().map(function(i){
return i.get_fieldValues();
});
d.resolve(result);
},
function(sender,args){
d.reject(args);
});
return d.promise();
}
在这种情况下,可以检索列表项,如下所示:
SP.SOD.executeFunc('SP.js', 'SP.ClientContext', function() {
var listTitle = 'Documents'; //set list title here
var properties = ['Title','ID']; //specify items properties here
getListItems(listTitle,properties)
.done(function(items){
console.log(items);
})
.fail(function(error){
console.log(error.get_message()); //if any error is occurred?
});
});
关于javascript - Sharepoint OnlineexecuteQueryAsync JSOM - 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31185851/
我需要做这样的事情。下图有 3 个术语,我需要将“我的术语 3”移动到“我的术语 1”下(然后“我的术语 3”将作为“我的术语 1”的子术语。 如何使用 JSOM,2013 Sharepoint 来实
假设我有 2 个列表:团队和员工。每个团队有多名员工: Teams ID Name Employees ID Name TeamID (foreign key of Teams)
我需要将术语名称作为参数传递,并返回 SharePoint 2013、JSOM 中该特定术语的 GUID 例如,如果我传递“My Term 1”,它应该返回“My Term 1”相应的 GUID。 v
我有以下方法可以从共享点查询中正确获取列表项,但是内容类型需要特殊处理并且不会返回。 function getListItems(listId, camlQueryString, selectProp
我在使用 JSOM/javascript 从术语组递归获取术语树时遇到问题。 问题是我确实递归地得到了所有值,但顺序完全错误。 function recurseTerms(currentTerm,
我正在尝试在共享点页面上添加脚本来帮助用户管理权限。 脚本必须中断继承(没问题)并更改库中某些文档集的权限(问题)。 要管理权限,在中断继承后我必须做两件事:删除所有现有组(问题)并添加特定组(没问题
在 SharePoint 2013 JavaScript 中,我想从列表中加载当前用户已修改的所有项目。我试过这个: var ctx = SP.ClientContext.get_current();
我正在创建一个 SharePoint 托管应用程序。我想利用控制,但我正在努力读取用户在我的 App.js 之一中输入的值功能。 这里突出显示了 Default.aspx 的部分代码: ...
我正在通过自动托管应用程序使用 CSOM(客户端代码)创建网站/网站集。我需要打开站点审核,但似乎无法找到任何方法以编程方式执行此操作。 欢迎任何想法! 最佳答案 在 CSOM API v. 16.1
对于 SharePoint 2013,有什么方法可以使用 JSOM 登录到 ULS? 如果可能的话,我想避免做一些事情,比如编写一个可以用 ajax 调用的自定义处理程序。 最佳答案 SharePoi
使用 Sharepoint Online 2013 通过 JSOM 构建应用程序。当前部分是在将数据提交到列表(工作正常)之后,将打开一个模式,允许用户根据该列表和其他列表创建 PDF。当前的问题是,
有人熟悉 SP.Taxonomy.TermSetItem.reuseTerm(e, d) 吗?它在 MSDN 中,我猜它是将一个术语集作为子术语复制到另一个术语集。有什么想法吗? 谢谢 最佳答案 SP
通常我们从 SharePoint 服务器对象模型获取数据。但我需要使用 JSOM 从 SharePoint 列表收集数据。 我的要求如下: 有一个名为 List1 的列表,其中包含 3 列 ID、标题
我目前正在使用 AngularJS 和 SharePoint JSOM 对结果源执行一些关键字查询。 我有一个接受 ResultSourceName 和 ResultSourceLevel 变量的 a
我需要让我的 SharePoint 加载项创建一个列表项。我从 OfficeDev Github 站点获得了该功能 here .当我调用该函数时,它在“this”首次出现的那一行失败。 错误是:无法设
我必须在 Sharepoint 列表功能区按钮和 ECB 菜单中添加一个按钮。这是使用 JSOM 在 Sharepoint 列表中添加 ECB 菜单的代码。 function AddCustomAct
我在 SharePoint 2013 的 Nintex 表单上使用了以下代码来获取当前用户详细信息, var userid = _spPageContextInfo.userId; var reque
任何人都可以帮助我使用 javascript 从人员列中获取用户信息吗?到目前为止,我已经能够读取列表项并返回一个 SP.FieldUserValue,从中我可以获得一个数字 ID(不确定这个 ID
我正在尝试从仅包含特定字段的 SharePoint 列表中获取列表项。该列表包含其他列表的查找字段,我只需要这些字段的 LookupId。 我知道两种情况可以缩小返回字段的范围。 第一个是 CAML。
我在sharepoint 2013的共享文档中有excel文件。我想将该文件的内容存储在数组变量中并将其发送到服务器端进行处理。 我正在加载客户端上下文,但我想获取文件中存在的记录。我的 Shared
我是一名优秀的程序员,十分优秀!