Skip to content

Commit b20f6e7

Browse files
committed
fix: fix filter problem when column value provider is not string based
1 parent 5c81ff6 commit b20f6e7

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

enhanced-grid-flow/src/main/java/com/vaadin/componentfactory/enhancedgrid/EnhancedColumn.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,16 @@ void updateFilterButtonStyle(){
153153
filterButton.getClassNames().add("filter-selected");
154154
}
155155
}
156-
156+
157157
ValueProvider<T, ?> getValueProvider(){
158-
if (this.getRenderer() instanceof ColumnPathRenderer) {
159-
valueProvider = ((ColumnPathRenderer<T>)this.getRenderer()).getValueProviders().values().iterator().next();
160-
} else if(valueProvider == null){
158+
if (this.valueProvider != null) {
159+
return this.valueProvider;
160+
} else if (this.getRenderer() instanceof ColumnPathRenderer) {
161+
return ((ColumnPathRenderer<T>)this.getRenderer()).getValueProviders().values().iterator().next();
162+
} else {
161163
throw new UnsupportedOperationException("Value provider for column is unknown. "
162164
+ "Please set one calling setValueProvider method.");
163165
}
164-
return valueProvider;
165166
}
166167

167168
public void setValueProvider(ValueProvider<T, ?> valueProvider) {

enhanced-grid-flow/src/main/java/com/vaadin/componentfactory/enhancedgrid/EnhancedGrid.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ public void beforeLeave(BeforeLeaveEvent event) {
378378
*/
379379
@Override
380380
protected BiFunction<Renderer<T>, String, Column<T>> getDefaultColumnFactory() {
381-
return (renderer, columnId) -> new EnhancedColumn(this, columnId, renderer);
381+
return (renderer, columnId) -> new EnhancedColumn<>(this, columnId, renderer);
382382
}
383383

384384
/**
@@ -387,10 +387,18 @@ protected BiFunction<Renderer<T>, String, Column<T>> getDefaultColumnFactory() {
387387
*/
388388
@Override
389389
public EnhancedColumn<T> addColumn(ValueProvider<T, ?> valueProvider) {
390-
BiFunction<Renderer<T>, String, Column<T>> defaultFactory = getDefaultColumnFactory();
391-
return (EnhancedColumn<T>) super.addColumn(valueProvider, defaultFactory);
390+
return (EnhancedColumn<T>) super.addColumn(valueProvider);
392391
}
393392

393+
@SuppressWarnings("unchecked")
394+
@Override
395+
protected <C extends Column<T>> C addColumn(ValueProvider<T, ?> valueProvider,
396+
BiFunction<Renderer<T>, String, C> columnFactory) {
397+
EnhancedColumn<T> column = (EnhancedColumn<T>) super.addColumn(valueProvider, columnFactory);
398+
column.setValueProvider(valueProvider);
399+
return (C) column;
400+
}
401+
394402
/**
395403
* @see Grid#addColumn(ValueProvider, String...)
396404
*
@@ -428,6 +436,15 @@ public <V extends Component> EnhancedColumn<T> addComponentColumn(ValueProvider<
428436
return (EnhancedColumn<T>) super.addComponentColumn(componentProvider);
429437
}
430438

439+
/**
440+
* @see Grid#getColumnByKey(String)
441+
*
442+
*/
443+
@Override
444+
public EnhancedColumn<T> getColumnByKey(String columnKey) {
445+
return (EnhancedColumn<T>) super.getColumnByKey(columnKey);
446+
}
447+
431448
@Override
432449
public void onApplyFilter(Object filter) {
433450
applyFilter();

0 commit comments

Comments
 (0)