в представлении при нажатии изменить значение предыдущей и текущей строки

Я хотел бы изменить значение поля в бэкэнд-документе щелкнутой строки в представлении, а также предыдущей строки. Что может быть лучшим способом сделать это?


person Marc Jonkers    schedule 19.07.2012    source источник


Ответы (1)


Интересная тема. Я только что попробовал и нашел это решение:

Я предполагаю, что вы используете панель просмотра (хотя вместо этого использование чего-то вроде повтора может немного упростить задачу). В разделе «Все свойства» вашей панели просмотра найдите свойство под названием «данные > var» (будьте осторожны: есть также «данные > данные > var», но это другое!). Здесь вы вводите уникальное имя для доступа к своим записям просмотра:

<xp:viewPanel rows="30" id="viewPanel1" var="entry">        
    <xp:this.data>
        <xp:dominoView var="view1" viewName="myView"></xp:dominoView>
    </xp:this.data>

Я добавил дополнительный столбец, выполнив вычисление его свойства данных, вычислив предыдущую запись с использованием объекта Navigator родительского представления текущей записи и убедившись, что и текущая, и предыдущая записи являются допустимыми объектами View Entry. Затем в результате я возвращаю значение NoteID предыдущей записи, чтобы убедиться, что я действительно получил к нему доступ.

if(!entry.isCategory()){
    var vnav:NotesViewNavigator = entry.getParent();
    vnav.gotoEntry(entry.getDocument())
    var pentry = vnav.getPrev();
    if(pentry!=null){
        pentry.getNoteID();
    }
}

Чтобы проверить это должным образом, я добавил еще один столбец, чтобы показать NoteID текущей записи:

entry.getNoteID();

Результат выглядит следующим образом:

введите здесь описание изображения

Итак, когда у вас есть предыдущий объект, у вас также есть доступ к его объекту документа.

Изменить: как получить объект viewNavigator обычным способом:

просто создайте свой viewNavigator, используя объект родительского представления, как в

var view = database.getView("myView);
var vnav = view.createViewNav();

С другой стороны, если вы видите, что entry.getParent() ведет к viewEntryCollection, вы можете попытаться получить доступ к предыдущей записи другим способом:

var vec = entry.getParent();
if (vec.toString().indexOf("ViewEntryCollection")>0){
    var preventry = vec.getPrevEntry(entry);
}
person Lothar Mueller    schedule 19.07.2012
comment
Я получаю сообщение об ошибке в строке 3: vnav.gotoEntry(entry.getDocument()) Ошибка интерпретатора сценария, строка = 3, столбец = 10: [TypeError] Ошибка при вызове метода 'gotoEntry (lotus.domino.local.Document)' для объекта типа 'lotus.domino.local.ViewEntryCollection [статическая оболочка интерфейса Java, lotus.domino.local.ViewEntryCollection: lotus.domino.ViewEntryCollection]' - person Marc Jonkers; 19.07.2012
comment
это интересно: это означает, что родительский объект для вашей записи — это viewEntryCollection, а на моей стороне — ViewNavigator. Вы можете убедиться в этом, закомментировав весь код. Затем вы пишете новую строку кода только для целей отладки: entry.getParent().toString(); - person Lothar Mueller; 19.07.2012
comment
В любом случае, если вы получите viewEntryCollection, вам придется создать viewNvaigator стандартным способом, например, NotesView.createViewNav(); Тогда вы сможете следовать исходному коду... Возможно, позже я опубликую альтернативный метод с использованием элемента управления повтором, если найду время - person Lothar Mueller; 19.07.2012
comment
запись.getParent().toString(); В этом столбце выдает: lotus.domino.local.ViewEntryCollection@26322632 для каждой строки одно и то же. Это нормально? entry.getNoteID(); Выдает правильно например 11FE , 123A и ​​тд - person Marc Jonkers; 20.07.2012
comment
Кажется, у меня возникла эта проблема, упомянутая выше (ошибка в строке 3), потому что у меня есть поиск в этом представлении. Когда я удаляю поиск, он работает. - person Marc Jonkers; 20.07.2012
comment
Вы говорите создать viewNavigator. Не могли бы вы помочь мне с этим. у меня не работает - person Marc Jonkers; 20.07.2012
comment
Я отредактирую свой исходный ответ, это проще, чем использовать этот упрощенный редактор комментариев. - person Lothar Mueller; 20.07.2012
comment
re: ваш комментарий о результате entry.getParent().toString(): да, это, конечно, нормально, поскольку вы всегда спрашиваете одно и то же... - person Lothar Mueller; 20.07.2012
comment
Спасибо за обновление, но на самом деле оно все еще не работает. Когда я создаю viewNavigator, как указано выше, он работает, когда я не добавляю свой поиск в свое представление. Как только я добавляю поиск, я снова получаю ошибку интерпретатора сценария. - person Marc Jonkers; 20.07.2012
comment
Код для моего поиска: var tmpArray = new Array(); вар cTerms = 0; if (sessionScope.country != null & sessionScope.country != ) { tmpArray[cTerms++] = (FIELD bbland = \ + sessionScope.country + \); } if (sessionScope.product != null & sessionScope.product != ) { tmpArray[cTerms++] = (FIELD bbproduct = \ + sessionScope.product + \); } qstring = tmpArray.join(И).trim(); вернуть qstring - person Marc Jonkers; 20.07.2012
comment
извините, моя ошибка, я не прочитал вашу заметку о поиске представления должным образом. Боюсь, в этом случае все сложнее. Вам нужно будет провести некоторое тестирование, можете ли вы получить доступ к следующим или предыдущим записям из ve-коллекции, если представление отфильтровано. Кроме того, объект viewNavigator будет отличаться от того, что вы получите, используя метод, который я рекомендовал — извините, мне придется проверить это самостоятельно. Но в целом те объекты, которые вы пытаетесь использовать здесь, такие же, как те, которые вы используете в любом коде LotusScript. Может быть, вы можете попробовать там, и, по крайней мере, у вас есть отладчик времени выполнения, который вам поможет. - person Lothar Mueller; 20.07.2012
comment
эээ.. Что такое ве-коллекция? и чем будет отличаться навигатор. Извините, я нуб... - person Marc Jonkers; 20.07.2012
comment
ve-collection — это мой ленивый код для viewEntryCollection ;) — Просмотр файла справки Domino Designer даст вам некоторое представление о соответствующих объектах Domino, что они из себя представляют и как они связаны с просмотром данных индекса и т. д. Важно прочитать здесь! - person Lothar Mueller; 20.07.2012