У меня есть nattable с возможностью сортировки/фильтров на основе офф http://www.eclipse.org/nattable/documentation.php?page=sorting и пример 6031_GlazedListsFilterExample.javaNatTable - Странное поведение при сортировке
Изначально моя таблица имеет нулевые строки.
Сценарий 1:
- Я просмотреть CTabItem, который содержит NatTable без каких-либо строк.
- Если я затем заполняю строки и нажимаю на заголовки столбцов, ничего не происходит (сортировка кажется отключенной).
Сценарий 2:
- Я НЕ просмотреть CTabItem, содержащий NatTable без каких-либо строк.
- Затем я заполняю строки
- Затем я просматриваю CTabItem, содержащий NatTable, который теперь имеет строки.
- я нажимаю на заголовки столбцов и все, рода, как и ожидалось (сортировка кажется включен)
Сценарий 3:
- Я НЕ просмотреть CTabItem, содержащий NatTable без каких-либо строк.
- Затем я заполняю строки
- Затем я просматриваю CTabItem, содержащий NatTable, который теперь имеет строки.
- Затем я удаляю все данные строки
- Я нажимаю на заголовки столбцов и все виды, как ожидалось (сортировка кажется включенной). * хотя строк нет, я все еще вижу, что в ячейке заголовка столбца появляются значки вверх/вниз
Есть ли причина, по которой действия заголовка столбца не «обновлены» после первоначального «представления» NatTable ? Другими словами, кажется, что учет оставшихся таблиц сохраняется после того, как впервые просматривается NatTable, независимо от того, изменяются ли строки.
Соответствующих разделы кода показаны ниже:
private CompositeLayer createExampleLayer(Collection<T> values,
IColumnPropertyAccessor<T> columnPropertyAccessor,
IDataProvider columnHeaderDataProvider, IConfigRegistry
configRegistry, Matcher<T> matcher) {
BodyLayerStack<T> bodyLayerStack = new BodyLayerStack<>(
values, columnPropertyAccessor);
// build the column header layer
DataLayer columnHeaderDataLayer = new
DefaultColumnHeaderDataLayer(columnHeaderDataProvider);
ILayer columnHeaderLayer = new
ColumnHeaderLayer(columnHeaderDataLayer, bodyLayerStack,
bodyLayerStack.getSelectionLayer());
SortHeaderLayer<T> sortHeaderLayer = new SortHeaderLayer<>
(columnHeaderLayer, new GlazedListsSortModel<T>
(bodyLayerStack.getSortedList(), columnPropertyAccessor,
configRegistry,
bodyLayerStack.getBodyDataLayer()), false);
FilterRowHeaderComposite<T> filterRowHeaderLayer = new
FilterRowHeaderComposite<>(
new DefaultGlazedListsFilterStrategy<T>
(bodyLayerStack.getFilterList(), columnPropertyAccessor,
configRegistry),
sortHeaderLayer, columnHeaderDataLayer.getDataProvider(),
configRegistry);
// Omitted code for rowHeaderLayer and cornerLayer
return new GridLayer(bodyLayerStack, filterRowHeaderLayer,
rowHeaderLayer, cornerLayer);
}
public BodyLayerStack(Collection<T> values,
IColumnPropertyAccessor<T> columnPropertyAccessor) {
eventList = GlazedLists.eventList(values);
TransformedList<T, T> rowObjectsGlazedList =
GlazedLists.threadSafeList(eventList);
this.sortedList = new SortedList<>(rowObjectsGlazedList, null);
// wrap the SortedList with the FilterList
this.filterList = new FilterList<>(sortedList);
this.bodyDataProvider = new ListDataProvider<>(this.filterList,
columnPropertyAccessor);
this.bodyDataLayer = new DataLayer(getBodyDataProvider());
// layer for event handling of GlazedLists and PropertyChanges
GlazedListsEventLayer<T> glazedListsEventLayer = new
GlazedListsEventLayer<>(bodyDataLayer, this.filterList);
this.selectionLayer = new SelectionLayer(glazedListsEventLayer);
ViewportLayer viewportLayer = new ViewportLayer(getSelectionLayer());
setUnderlyingLayer(viewportLayer);
}
private void enableSorting() {
this.nattable.addConfiguration(new SingleClickSortConfiguration());
}
Как вы заполняете данные? –
заблокировать eventList и добавить его прямо к этому – ekjcfn3902039
И каков список начальных значений? Пустой список или нуль? –