如何修复:在 Sharepoint online 中保存按当前用户过滤的查找和状态
How to fix: Save filtered lookup by current user and status in sharepoint online
我使用 "SP.js CSOM SP.ClientContext" 按当前用户 ID 和状态过滤了查找字段,并且成功过滤了查找。但尝试保存时出现错误 "Sorry, Something went wrong",关联 ID 为“9b40ec9e-1004-8000-bbff-36490b07f284”。
注意:如果我取消过滤,它保存得很好。
我尝试使用其他过滤方法,使用 CAML 查询和 JSOM Ajax 调用。所有过滤都成功,但保存失败。
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
function sharePointReady(){
getItemsFromView("Activity Plan", "Approved",
function(items){
var field = getField("select", "My Planned Tasks")
for(var i = 0; i < items.get_count(); i++){
var item = items.get_item(i);
var node = document.createElement("option");
var textnode = document.createTextNode(item.get_item('Deliverable'));
node.appendChild(textnode);
field.appendChild(node);
}
},
function(sender,args){
console.log(args.get_message())
}
);
}
function getItemsFromView(listTitle, viewTitle,success,error){
var ctx = new SP.ClientContext();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var view = list.get_views().getByTitle(viewTitle);
ctx.load(view,'ViewQuery');
ctx.executeQueryAsync(
function() {
var viewQry = "<View><Query>" + view.get_viewQuery() + "</Query>
</View>";
getItems(listTitle,viewQry,success,error);
},
error);
}
function getItems(listTitle, queryText,success,error) {
var ctx = new SP.ClientContext();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var query = new SP.CamlQuery();
query.set_viewXml(queryText);
var items = list.getItems(query);
ctx.load(items);
ctx.executeQueryAsync(
function() {
success(items);
},
error
);
}
function getField(fieldType,fieldTitle) {
var docTags = document.getElementsByTagName(fieldType);
for (var i=0; i < docTags.length; i++) {
if (docTags[i].title == fieldTitle) {
while (docTags[i].firstChild) {
docTags[i].removeChild(docTags[i].firstChild);
}
return docTags[i];
}
}
return false;
}
我希望它保存在日历事件列表中,但我收到错误消息 "Sorry, something went wrong" 和相关 ID“9b40ec9e-1004-8000-bbff-36490b07f284”
您没有为选项输入值。所以它就像一个没有 ID 的选项,只有文本,所以需要替换这部分
var textnode = document.createTextNode(item.get_item('Deliverable'));
node.appendChild(textnode);
与以下
var textnode = document.createTextNode(item.get_item('Deliverable'));
node.value = item.get_item('ID');
node.appendChild(textnode);
我使用 "SP.js CSOM SP.ClientContext" 按当前用户 ID 和状态过滤了查找字段,并且成功过滤了查找。但尝试保存时出现错误 "Sorry, Something went wrong",关联 ID 为“9b40ec9e-1004-8000-bbff-36490b07f284”。 注意:如果我取消过滤,它保存得很好。
我尝试使用其他过滤方法,使用 CAML 查询和 JSOM Ajax 调用。所有过滤都成功,但保存失败。
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
function sharePointReady(){
getItemsFromView("Activity Plan", "Approved",
function(items){
var field = getField("select", "My Planned Tasks")
for(var i = 0; i < items.get_count(); i++){
var item = items.get_item(i);
var node = document.createElement("option");
var textnode = document.createTextNode(item.get_item('Deliverable'));
node.appendChild(textnode);
field.appendChild(node);
}
},
function(sender,args){
console.log(args.get_message())
}
);
}
function getItemsFromView(listTitle, viewTitle,success,error){
var ctx = new SP.ClientContext();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var view = list.get_views().getByTitle(viewTitle);
ctx.load(view,'ViewQuery');
ctx.executeQueryAsync(
function() {
var viewQry = "<View><Query>" + view.get_viewQuery() + "</Query>
</View>";
getItems(listTitle,viewQry,success,error);
},
error);
}
function getItems(listTitle, queryText,success,error) {
var ctx = new SP.ClientContext();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var query = new SP.CamlQuery();
query.set_viewXml(queryText);
var items = list.getItems(query);
ctx.load(items);
ctx.executeQueryAsync(
function() {
success(items);
},
error
);
}
function getField(fieldType,fieldTitle) {
var docTags = document.getElementsByTagName(fieldType);
for (var i=0; i < docTags.length; i++) {
if (docTags[i].title == fieldTitle) {
while (docTags[i].firstChild) {
docTags[i].removeChild(docTags[i].firstChild);
}
return docTags[i];
}
}
return false;
}
我希望它保存在日历事件列表中,但我收到错误消息 "Sorry, something went wrong" 和相关 ID“9b40ec9e-1004-8000-bbff-36490b07f284”
您没有为选项输入值。所以它就像一个没有 ID 的选项,只有文本,所以需要替换这部分
var textnode = document.createTextNode(item.get_item('Deliverable'));
node.appendChild(textnode);
与以下
var textnode = document.createTextNode(item.get_item('Deliverable'));
node.value = item.get_item('ID');
node.appendChild(textnode);