在视图中点击更改前一行和当前行的值

时间:2012-07-19 08:15:07

标签: xpages xpages-ssjs

我想更改视图中单击行的后端文档中的字段值,但也要更改前一行的字段值。 什么是最好的方法呢?

1 个答案:

答案 0 :(得分:1)

有趣的话题。我试了一下,发现了这个解决方案:

我假设您正在使用视图面板(使用类似重复的内容可能会使事情变得更容易)。在"所有属性"您的viewPanel查找名为" data>的属性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();
    }
}

为了能够正确检查这一点,我又添加了一列来显示当前条目的注释ID:

entry.getNoteID();

结果如下:

enter image description here

因此,一旦拥有了上一个对象,您也可以访问其文档对象。

编辑: 如何以普通方式获取viewNavigator对象:

使用父视图对象创建viewNavigator,如

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

另一方面,如果你看到entry.getParent()导致一个viewEntryCollection,你也可以尝试以不同的方式访问prvious条目:

var vec = entry.getParent();
if (vec.toString().indexOf("ViewEntryCollection")>0){
    var preventry = vec.getPrevEntry(entry);
}