使用动态视图面板参数的编辑框值

时间:2015-05-07 11:17:08

标签: xpages lotus-domino

我要做的是在Xpage上有一个编辑框,一个按钮和一个动态视图面板,在Notes数据库中有一个View。然后在编辑框中输入文档ID,当单击该按钮时,将使用编辑框值作为动态视图面板中的过滤参数。互联网上似乎很少。我试过设置动态视图面板"键"属性值

getComponent("inputDocumentID").getValue()

让按钮完全刷新,但这不起作用。如何使用编辑框作为动态视图参数? Notes视图选择公式是;

SELECT ((Form = "Contract")) & (conContractStatus  = "Cancelled") &     
(initialstagecomplete = "1")

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();