过滤ViewPanel控件

时间:2014-07-30 20:32:09

标签: xpages xpages-ssjs

我有一个viewPanel控件,我添加了一个编辑框和一个按钮,显示" Apply Filter"在我看来。如果用户输入了我想根据输入内容过滤视图的内容。因此,让我们说编辑框将用于过滤公司名称'视图的列。我在" onclick"中提供了以下代码:在我的按钮SSJS下的活动。

var viewPanel1:com.ibm.xsp.component.xp.XspViewPanel = getComponent("viewPanel1");
var domView:com.ibm.xsp.model.domino.DominoViewData = viewPanel1.getData();
var filtervalue = getComponent('cmbCompanyName').getValue();
domView.setKeys(filtervalue);

我不明白setKeys是如何知道我在' CompanyName'上过滤的?我只是传递用户输入的内容。上面的代码不会产生错误,它只是不会产生预期的结果。如果我能看到我的公司'在视图中。我进入了我的公司'在我的编辑框中,然后点击“应用过滤器”#39;按钮,然后视图完全空白。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

如果您将过滤器编辑框值绑定到视图范围变量,并且将此视图范围变量用作dominoView',则可以在不编码SSJS的情况下获得更简单的解决方案。 s keys属性。

您只需要部分刷新viewPanel1点击按钮"应用过滤器"没有任何额外的代码。

<xp:this.data>
    <xp:dominoView
        var="view1"
        viewName="viewCompanies"
        keys="#{viewScope.cmbCompanyName}">
    </xp:dominoView>
</xp:this.data>
<xp:inputText
    id="inputText1"
    value="#{viewScope.cmbCompanyName}"></xp:inputText>
<xp:button
    value="Filter"
    id="button1">
    <xp:eventHandler
        event="onclick"
        submit="true"
        refreshMode="partial"
        refreshId="viewPanel1">
    </xp:eventHandler>
</xp:button>
<xp:viewPanel
    value="#{view1}"
    id="viewPanel1">
    ...
</xp:viewPanel>

keys属性过滤器始终是视图中的第一个排序列。因此,在您的情况下,CompanyName列必须是第一个排序列。

如果keys属性包含数组,则第一个元素过滤第一个排序列,第二个元素过滤第二个排序列,依此类推。

如果您有多个过滤器可以处理不同的排序列,那么您可以&#34;切换&#34; &#34;第一&#34;使用dominoView的属性

将列排序到另一个已排序的列
sortColumn="otherColumnName"

&#34; otherColumnName&#34;可以使用SSJS计算,具体取决于单击了哪个按钮或填充了哪些过滤器编辑字段。