在GXT 3.0.1中基于ModelData使网格单元格可编辑

时间:2013-12-24 12:06:52

标签: grid cell gxt custom-cell

我想根据该单元格中的数据对Grid Cell进行编辑。

单元格接受String。所以,我正在添加一个文本编辑器,如下所示:

 final GridInlineEditing<ModelData> editableGrid = new GridInlineEditing<ModelData>(grid);

    int columnCount = grid.getColumnModel().getColumnCount();
   final TextField text = new TextField();
    for(int i=1;i<columnCount-1;i++)
    {
        final ColumnConfig<ModelData,String> config = grid.getColumnModel().getColumn(i);        
          editableGrid.addEditor(config, text);
    }

还有。当我创建网格时

config.setCell(new AbstractCell<String>() {


           @Override
           public void render(Context context, String value, SafeHtmlBuilder sb)
           {
               ModelData model  = getGrid().getStore().get(context.getIndex());
               if(null==value)
               {
                   value = "";
               }
               if(model.getName().equals("vivek") {
                   sb.appendHtmlConstant("<div style=\"background-color:#E9967A;\">");
                   sb.appendHtmlConstant((String)value);
                   sb.appendHtmlConstant("</div>");

                 }
                else{

                     sb.appendHtmlConstant("<span>" + value + "</span>");            
                }
           }


   });

但是,我无法使必填字段可编辑(我可以将它们设为彩色)。 getGrid(),是一个简单地返回网格的方法

然后,我尝试使用Custom TextInputCell将编辑器设置为TextField,但这不接受HTML。

那么,我怎样才能做到这一点。根据数据使网格单元格可编辑。

1 个答案:

答案 0 :(得分:2)

我找到了答案:)

editableGrid.addBeforeStartEditHandler(new BeforeStartEditHandler<ModelData>() {

@Override
public void onBeforeStartEdit(BeforeStartEditEvent<ModelData> event) {    
    ModelData data = grid.getStore().get(event.getEditCell().getRow());

    if(condition)
    event.getSource().getEditor(event.getSource().getEditableGrid().getColumnModel().getColumn(event.getEditCell().getCol())).enable();
            }
    else {
     event.getSource().getEditor(event.getSource().getEditableGrid().getColumnModel().getColumn(event.getEditCell().getCol())).disable();
        }
}