在我的NatTable中,我正在使用类似于ExcelLikeFilterRowCustomTypesExample的ComboBoxFilterRowHeaderComposite它运行良好,但是组合框筛选在大型表中添加了太多项目,以便于筛选。但是,我正在尝试通过仅用某些项目填充组合来解决此问题;在我的表中,有些列仅用于具有有限数量的不同值的类型或操作,我想为这些类型或操作添加所有选项。而对于其他列,我只想添加根项。
但是,为了实现这一点,我认为我需要修改comboBoxDataProvider;为了获得我想要的完整效果,它需要为某些列使用不同的数据提供程序。
这是正确的方法吗?如果是这样,我将如何去做呢?
这是我目前配置组合框复合的方式:
ComboBoxFilterRowHeaderComposite<GroupedPerfRecord> filterRowHeaderLayer =
new ComboBoxFilterRowHeaderComposite<GroupedPerfRecord>(
bodyLayerStack.getFilterList(),
bodyLayerStack.getBodyDataLayer(),
bodyLayerStack.getSortedList(),
columnPropertyAccessor, columnHeaderLayer,
columnHeaderDataProvider, configRegistry, false);
final IComboBoxDataProvider comboBoxDataProvider = filterRowHeaderLayer.getComboBoxDataProvider();
filterRowHeaderLayer.addConfiguration(new ComboBoxFilterRowConfiguration() {
{
this.cellEditor = new FilterRowComboBoxCellEditor(comboBoxDataProvider, 5);
this.filterIconPainter = new ComboBoxFilterIconPainter(comboBoxDataProvider, GUIHelper.getImage("filter"), null);
}
});
使用具有单选组合框的默认筛选器行,您将对每列使用不同的IComboBoxDataProvider
。但是,您选择了后面具有不同过滤机制的ComboBoxFilterRowHeaderComposite
,以支持多选和处理"全选">,类似于众所周知的电子表格应用程序。因此,没有内置机制可以简单地配置所需的行为。
但是ComboBoxFilterRowHeaderComposite
中有一个构造函数,它将FilterRowComboBoxDataProvider
作为参数。因此,您可以提供自己的FilterRowComboBoxDataProvider
实现(可能是GlazedListsFilterRowComboBoxDataProvider
的子类(,并根据列索引在getValue()
中实现所需的行为。