Проверьте, существует ли значение поля в другом списке 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());
 }
Другие вопросы по тегам