我有一个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;按钮,然后视图完全空白。
任何帮助表示感谢。
答案 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计算,具体取决于单击了哪个按钮或填充了哪些过滤器编辑字段。