Проверьте, существует ли значение поля в другом списке SharePoint, прежде чем создавать элемент
Я хочу проверить, существует ли значение элемента в другом списке, прежде чем сохранять его с помощью функции PreSaveAction. Значение, которое я хочу проверить, является EventDate
function PreSaveAction() {
var time = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
alert(time);
//Validation for current fields
if(SPUtility.GetSPField('Field').GetValue() == "yes")
{
alert('Validation passed, let SharePoint continue');
return true;}
else
{
alert('Validation failed, let SharePoint not continue');
return false;
}
}
И я получаю элементы из второго списка с этим:
function ViewItem()
{
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getByTitle('demoTrainingRoom2');
var query = SP.CamlQuery.createAllItemsQuery();
allItems = list.getItems(query);
context.load(allItems, 'Include(Title, EventDate)');
context.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
}
function success() {
//var contador = this.allitems.getCount();
var TextFiled = "";
var ListEnumerator = this.allItems.getEnumerator();
var firstListTime = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
while(ListEnumerator.moveNext())
{
var currentItem = ListEnumerator.get_current();
TextFiled += currentItem.get_item('Title') + '-' + currentItem.get_item('EventDate'); +'\n';
}
alert(TextFiled);
}
function failed(sender, args) {
alert("failed. Message:" + args.get_message());
}
Поэтому я хочу проверить, имеет ли какой-либо элемент в списке 1 одинаковую EventDate в списке 2 при использовании PreSaveAction. Любая помощь будет любезно оценена
ОБНОВИТЬ
Спасибо за интерес, теперь я могу успешно проверить, существует ли значение в первом списке во втором списке с помощью следующего кода. Теперь мне нужно передать результат этой проверки в функцию PreSaveAction, когда demoField равен yes
function ViewItem()
{
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getByTitle('demoTrainingRoom2');
var query = SP.CamlQuery.createAllItemsQuery();
allItems = list.getItems(query);
context.load(allItems, 'Include(Title, EventDate)');
context.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
}
function success() {
var currentTitle = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
for(var i = 0; i < this.allItems.get_count(); i++){
var item = this.allItems.get_item(i);
console.log(item.get_item('EventDate'));
if (currentTitle === item.get_item('EventDate')){
alert('I exist on the second list' + ' ' + item.get_item('EventDate'));
return true; // or item
}
}
return false;
}
function failed(sender, args) {
alert("failed. Message:" + args.get_message());
}
function PreSaveAction() {
var time = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
if(SPUtility.GetSPField('demoField').GetValue() == "yes")
{
//Saving File
return true;}
else
{
//NOt saving FIle
return false;
}
}
Заранее благодарю за помощь
1 ответ
Вызовите метод PreSaveAction() внутри первого метода OnSuccess() вашего первого списка, передайте дату события как запрос caml во второй список, то есть запрос 2-го списка в дату события......... это просто фрагмент может содержать некоторые ошибка, проверить
function ViewItem()
{
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getByTitle('demoTrainingRoom2');
var query = SP.CamlQuery.createAllItemsQuery();
allItems = list.getItems(query);
context.load(allItems, 'Include(Title, EventDate)');
context.executeQueryAsync(Function.createDelegate(this, this.success),Function.createDelegate(this, this.failed));
}
function success() {
var TextFiled = "";
var ListEnumerator = this.allItems.getEnumerator();
var firstListTime = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
while(ListEnumerator.moveNext())
{
var evtDate = currentItem.get_item('EventDate');
function PreSaveAction() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('List2');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'EventDate\'/>' +
'<Value Type=\'DateTime\'>'+ evtDate +'</Value></Eq></Where></Query><RowLimit>1</RowLimit></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 listItemInfo = '';
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
alert('event date exist')
}
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}