2016-12-16 2 views
0

enter image description hereXPages - добавить флаг с помощью с помощью кнопки мыши на элемент повтора

Карты выше заполняются через повторение и вид не классифицируется. Теперь я хочу добавить возможность добавить флаг удаления на любую из карт в любом порядке.

Ниже приведен код для кнопки удаления:

<xp:link> 
    <span class="glyphicon glyphicon-trash pull-right text-primary"></span> 
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> 
     <xp:this.action><xp:actionGroup><xp:executeScript> 
      <xp:this.script><![CDATA[#{javascript: 
     var name=getComponent("FullName").getValue(); 
     var vec:NotesView = database.getView("SupportTeam"); 
     var docEv:NotesDocument = vec.getFirstDocument(); 
     if (name == docEv.getItemValueString("FullName")) { 
      docEv.replaceItemValue("SupportAction", "Delete");   
      docEv.save(); 
     } 
    }]]></xp:this.script> 
              </xp:executeScript> 
             </xp:actionGroup> 
            </xp:this.action></xp:eventHandler> 
            </xp:link> 

Код выше работ, но кнопка удаления необходимо щелкнуть два раза для его работы, и он должен быть в порядке, то есть, если " Test 6 ', он не будет удалять, так как «Тест 5» мешает.

Я попытался использовать getdocumentbykey(), но представление нужно будет категоризировать, а затем отобразить несколько записей. В этом случае он отобразит много пустых карточек.

Ваша помощь будет оценена по достоинству.

+1

Возможно, покажите нам код рендеринга карты, чтобы мы могли понять эту структуру. Кроме того, как создаются объекты повторения? Они хранятся в ViewScope или ?? – Newbs

+0

Как сказал @Newbs, расширение с помощью кода из 'xp: repeat' и все, что происходит в том, как он вычисляет источник данных, будет более информативным. –

ответ

0

Мы должны видеть повторить ваш код, тем не менее, aslong, как вы установите УАК свойство вашего повторе к чему-то, что потом делает данные строки доступны для вас, так что вы могли бы использовать что-то вроде:

var id = rowData.getUniversalID(); 
var docEv:NotesDocument = database.getDocumentByUNID(id); 
docEv.replaceItemValue("SupportAction", "Delete");   
docEv.save(); 
//Or to do a hard delete 
docEv.remove(true); 
0

Я решил прокрутить коллекцию дважды, используя цикл while, чтобы получить коллекцию, а затем цикл for для действия и, похоже, работает, но я уверен, что должен быть лучший способ сделать это. Ниже приведен окончательный код:

var name = getComponent("FullName").getValue(); 
var vec:NotesView = database.getView("SupportTeam"); 
var docEv:NotesDocument = vec.getFirstDocument(); 
var collection = []; 
while (docEv != null){ 
    try{ 
     var member = docEv.getItemValueString("SupportFullName"), memberLength = collection.length; 
     collection.push(member); 

     for (var i = 0; i < memberLength; i++) { 
      if(memberLength != null && name == docEv.getItemValueString("SupportFullName")){ 
       docEv.replaceItemValue("SupportAction", "Delete");   
       docEv.save(); 
      } 
     } 
    }catch(e){ 
     print("error: " + e.toString()); 
    } 

    var tmp = vec.getNextDocument(docEv); 
    docEv.recycle(); 
    docEv = tmp; 
} 

Спасибо за все в ответе.

Смежные вопросы