0

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

4

1 回答 1

1

有趣的话题。我只是试了一下,找到了这个解决方案:

我假设您正在使用视图面板(不过,使用类似重复的东西可能会使事情变得更容易一些)。在 viewPanel 的“所有属性”下查找名为“data > var”的属性(注意:还有一个“data > data > var”,但这是另一回事!)。您可以在此处输入一个唯一名称以访问您的视图条目:

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

我添加了一个额外的列来计算其数据属性,使用当前条目的父视图导航器对象计算前一个条目,并确保当前和前一个条目都是有效的视图条目对象。然后,结果我返回上一个条目的 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);
}
于 2012-07-19T09:50:33.200 回答