我要做的是在Xpage上有一个编辑框,一个按钮和一个动态视图面板,在Notes数据库中有一个View。然后在编辑框中输入文档ID,当单击该按钮时,将使用编辑框值作为动态视图面板中的过滤参数。互联网上似乎很少。我试过设置动态视图面板"键"属性值
getComponent("inputDocumentID").getValue()
让按钮完全刷新,但这不起作用。如何使用编辑框作为动态视图参数? Notes视图选择公式是;
SELECT ((Form = "Contract")) & (conContractStatus = "Cancelled") &
(initialstagecomplete = "1")
答案 0 :(得分:1)
我通常使用范围变量来做这件事。我们的想法是使用类似于LotusScript NotesViewEntryCollection.getEntriesByKey("keyFilter", False)
的机制:
假设您有一个Notes视图,其中第一列按UNID排序(列公式= @Text(@DocumentUniqueID)
)。
在您的xpage中,您可以像往常一样创建视图面板。 vp的key属性设置为侦听requestScope变量,如下所示:
<xp:viewPanel id="viewPanel1">
<xp:this.data>
<xp:dominoView var="view1" viewName="myView"
keys="#{javascript:requestScope.keyFilter;}">
</xp:dominoView>
</xp:this.data>
...
</xp:viewPanel>
在Xpage页面的其他位置,您可以创建一个编辑框并将其绑定到您的requestScope var,如下所示:
<xp:inputText id="inputText1" value="#{requestScope.keyFilter}">
<xp:eventHandler event="onkeyup" submit="true"
refreshMode="partial" refreshId="viewPanel1">
</xp:eventHandler>
</xp:inputText>
如您所见,每个输入都会立即存储在我的范围变量中,并且每个keyup事件都会在视图面板上执行部分刷新,从而在键入时优化键过滤器。
注:
如果您的视图面板带有寻呼机,则需要注意:如果您在vp未显示页面#5时开始过滤,则应用键过滤器可能会呈现空视图。原因是视图仍显示第5页,但没有足够的数据显示在5页上。
解决方案再次非常简单:在编辑框的onkeyup
事件中添加几行服务器端脚本,从而重置视图以显示第1页:
getComponent("viewPanel1").gotoFirstPage();