如果未设置过滤器,如何防止带有类别过滤器的viewPanel显示空行

时间:2012-07-25 13:05:10

标签: xpages xpages-ssjs

我在视图面板中显示了这个分类视图,其中未显示类别列本身。相反,我在viewPanel上方显示一个组合框,用户可以在其中选择所有可用的类别(见下面的截图)。组合绑定到scopeVariable并刷新viewPanel onChange。 viewPanel具有从同一scopeVar读取的计算categoryFilter。一切都很好。

现在我还在选择列表中实现了一个额外的通配符(*)值(如果选择),以编程方式将cat过滤器设置为NULL。这样我就强迫viewPanel显示所有条目。再次,这很好,但缺点是现在视图显示空行,其中类别条目将正常显示(在屏幕截图中,您看到每个条目上方的空行,有2个条目,类别“edcom GmbH”显然属于到同一类别;那些没有用空行分隔):

enter image description here

至少隐藏那些空行的一种方法是通过css编码。但我希望那些行根本不被渲染。

这可以使用viewPanel完成,以及如何完成?或者我是否必须使用其他控件,如repeat或dataTable?

提前致谢,

洛萨

3 个答案:

答案 0 :(得分:3)

一个“黑客”(我承认这是一个丑陋的)将您的分类列从Firma更改为Firma:"--All--"Firma:"*",然后将类别过滤器设置为{{ 1}})。

双重类别会击中索引器,但应该按照您的需要进行操作。

答案 1 :(得分:0)

显然没有简单的方法。所以同时我会坚持这个CSS风格的解决方案:

在视图面板和所有属性 - 数据中我设置了var =“entry”。然后,在All Properties - 样式下,我为rowClasses属性设置了一个编程值:

if(entry.isCategory()){
    return "rowStyleHidden";
}
return "";

样式类“rowStyleHidden”使用

隐藏这些行
display: none;

不知道性能如何变得明显,一旦我在真实数据库的副本中实现它,我将不得不观察它。

答案 2 :(得分:0)

您还可以通过根据组合框中的值计算视图名称来切换到无分类视图。