我想讓這些行的某些單元格是不可編輯的。 現在我的解決方案是當我創建的列,如果一個只讀,y做一個TextCell,如果沒有,我去默認單元格可以是EditTextCell,DatePickerCell等。GWT CellTable Cells readOnly/disabled/non-editable
與此問題是,我不能讓一些行只讀和其他人不。或者他們都是隻讀的字段,或者他們不是。
我該怎麼做才能讓這個例如
表:
數據1 | Data2 | Data3
--------------------------------------
readOnly |非readOnly |只讀
readOnly | readOnly |非readOnly的
時,我的意思是「readOnly的」可以「開啓」或使之成爲「TextCell」
celda = new TextInputCell();
Column<ObjetoDato, String> columna = new Column<ObjetoDato, String>(celda) {
@Override
public String getValue(ObjetoDato object) {
if(actual.getValorDefault()!=null && object.getValor(actual.getNombreCampo()).isEmpty()){
object.setValor(actual.getNombreCampo(), actual.getValorDefault());
return actual.getValorDefault();
}
return object.getValor(actual.getNombreCampo());
}
};
tabla.agregarColumna(columna, actual.getCaption());
columna.setFieldUpdater(new FieldUpdater<ObjetoDato, String>() {
@Override
public void update(int index, ObjetoDato object, String value) {
object.setValor(actual.getNombreCampo(), value);
new Scripter(object,actual.getComportamiento(),true);
tabla.actualizar();
Sistema.get().getIG().actualizarTotales();
}
});
我試着已經創建我對自定義電池和更換TextImputCell,但從來沒有方法觸發
celda = new FabriCel();
和
public class FabriCel extends TextInputCell {
private String campo;
public FabriCel(String campo){
this.campo=campo;
}
@Override
public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater){
Boolean editable = false;///get it from your model
if(editable != null && !editable){
event.preventDefault();
}else{
super.onBrowserEvent(context, parent, value, event, valueUpdater);
}
}
而且這個
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
Boolean editable = false;///get it from your model
if(editable){
Log.log();
sb.appendHtmlConstant("<div contentEditable='false'>" +value+"</div>");
}else{
Log.log("No entra");
super.render(context, value, sb);
}
}
謝謝!
當我給出的答案則必須創建自定義單元格。而不是把'EditTextCell'的直接實例,你必須添加自定義cell.can你把一些代碼? – iMBMT
我添加了一些代碼,渲染從不觸發。 – fguespe
如果我沒有錯,那麼我發佈的代碼與您的需求匹配。你爲什麼使用'TextInputCell'而不是'EditTextCell'?我不明白。你想什麼時候調用'onBrowserEvent' /'render'?在調試模式下運行,並檢查調試點! – iMBMT