在我的NatTable中,我正在使用类似于ExcelLikeFilterRowCustomTypesExample的ComboBoxFilterRowHeaderComposite。它工作得很好,但是组合框过滤在大型表中添加了太多项目,以至于无法轻松过滤。我试图通过仅用某些项目填充组合来解决此问题;在我的表格中,有些列仅用于类型或操作,这些类型或操作具有有限的不同值,我想为这些添加所有选项。对于其他列,我只想添加根项目。
要实现这一点,我想我需要修改comboBoxDataProvider。为了获得完整的效果,我希望某些列需要使用不同的dataprovider。
这是正确的方法吗?如果是这样,我将如何去做呢?
这是我当前配置组合框组合的方式:
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);
}
});
答案 0 :(得分:0)
对于具有用于单个选择的组合框的默认过滤器行,您将为每列使用不同的IComboBoxDataProvider
。但是,您选择了ComboBoxFilterRowHeaderComposite
,该过滤器的背面采用了不同的过滤机制,以支持类似于众所周知的电子表格应用程序的 Select All 的多重选择和处理。因此,没有内置的机制可以简单地配置所需的行为。
但是ComboBoxFilterRowHeaderComposite
中有一个使用FilterRowComboBoxDataProvider
作为参数的构造函数。因此,您可以提供自己的FilterRowComboBoxDataProvider
实现(也许是GlazedListsFilterRowComboBoxDataProvider
的子类),并根据列索引在getValue()
中实现所需的行为。