2013-12-24 5 views
0

Я хочу сделать ячейку сетки редактируемой на основе данных в этой ячейке.Создание ячейки сетки, редактируемой на основе ModelData в GXT 3.0.1

Ячейка принимает строку. поэтому, я добавить редактор текста следующим образом:

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); 
    } 

и also.when я создавал сетки

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(), метод, который просто возвращает сетку

Затем я попытался с помощью редактора настроек TextField с Custom TextInputCell, но это не принимает HTML.

Итак, как я могу достичь этого. Создание редактируемой ячейки сетки на основе данных.

+0

http://stackoverflow.com/questions/16070953/gxt-3-x-editorgrid-choose-cell-editor-type-on-a-cell- by-cell-basis http://stackoverflow.com/questions/10632458/how-to-add-css-to-selected-row-in-treegrid-gxt-3 В этих двух обсуждалась одна и та же проблема, но я не мог понять, как сделать редактируемый –

ответ

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(); 
     } 
} 
+0

Прокомментируйте, если вы обнаружили какую-либо проблему с подходом –

+0

. Я также сталкиваюсь с аналогичной проблемой. http://stackoverflow.com/q/22610705/1903120 Можете ли вы, пожалуйста, дать решение для этого, пожалуйста, – Gundamaiah

+0

Я не работал с GXT 2. Прошу помощи на форуме Sencha. sencha.com/forum –