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

Use edit box value for dynamic view panel parameter

我想做的是在 Xpage 上有一个编辑框、一个按钮和一个动态视图面板,在 Notes 数据库中有一个视图。然后在编辑框中输入文档 Id,当单击该按钮时,将使用编辑框值作为动态视图面板中过滤的参数。网上好像很少。我尝试将动态视图面板的 "Keys" 属性 设置为值

getComponent("inputDocumentID").getValue()

并让按钮进行完全刷新,但这不起作用。如何将编辑框用作动态视图参数?备注视图选择公式为;

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

我通常使用作用域变量来执行此操作。这个想法是使用类似于 LotusScript 的 NotesViewEntryCollection.getEntriesByKey("keyFilter", False):
的机制 假设您有一个 Notes 视图,其中第一列按 UNID 排序(列公式 = @Text(@DocumentUniqueID))。 在您的 xpage 中,您一如既往地创建视图面板。 vp 的密钥 属性 设置为侦听这样的 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 变量,如下所示:

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