Я хотел бы изменить значение поля в бэкэнд-документе щелкнутой строки в представлении, а также предыдущей строки. Что может быть лучшим способом сделать это?
в представлении при нажатии изменить значение предыдущей и текущей строки
Ответы (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);
}