我需要將列添加到GXT網格中。我可以這樣做,但是當我想輸入行數據時會出現問題。事情是,並不是所有的行都有特定的列。所以我想要實現的是檢查給定的行是否有特定的列並返回適當的值。GXT ValueProvider動態值
問題是,我的列的ValueProvider不允許在其方法中使用參數。所以我無法將列名傳遞給ValueProvider,因此它可以檢查給定列是否存在於特定行中並返回適當的數據。
這裏是我的專欄:
ColumnConfig<SomeClass, String> column = new ColumnConfig<SomeClass, String> (props.attributeValue(name), 150, name);
這裏是我的ValueProvider
ValueProvider<LimitDTO, String> attributeValue(String name);
這裏是我的實現(簡體):
public String getAttributeValue(String name) {
if(this.attributes.get(name) == null) {
return "";
} else {
return this.attributes.get(name);
}
}
,但我得到建立自己的錯誤:
Method public abstract com.sencha.gxt.core.client.ValueProvider<com.example.SomeClass, java.lang.String> attributeValue(java.lang.String s) must not have parameters
SOLUTION
感謝您的回答,我能夠做到這一點。這是我的ValueProvider實現,以防有人尋找解決方案。這是不是很難畢竟:)
public class CustomValueProvider implements ValueProvider<SomeClass, String> {
public String column;
public CustomValueProvider(String column) {
this.column = column;
}
@Override
public String getValue(SomeClass object) {
if(object.getAttributes().get(column) == null) {
return "";
} else {
return object.getAttributes().get(column);
}
}
@Override
public void setValue(SomeClass object, String value) {
}
@Override
public String getPath() {
return column.getName();
}
}
這裏是我如何使用它
LimitsValueProvider lvp = new LimitsValueProvider(name);
ColumnConfig<SomeClass, String> newColumn = new ColumnConfig<>(lvp, 150, name);
非常感謝!
看一看[here](http://www.sencha.com/forum/showthread.php?249066-Dynamic-value-provider)。也許這有幫助。 – Jens
謝謝!我更新瞭解決方案的帖子 –