Проблема SmartGWT ListGrid.setAlwaysShowEditors (true)

#java #smartgwt #smartclient

#java #smartgwt #smartclient

Вопрос:

У нас есть базовая ListGrid, в которой одно из полей доступно для редактирования, и редактор для этого поля всегда должен отображаться, вот код создания

 ListGrid listPanel = new ListGrid();
listPanel.setDataFetchMode(FetchMode.PAGED);
listPanel.setDataSource(datasource);
listPanel.setAutoFetchData(true);
listPanel.setAlwaysShowEditors(true);
listPanel.setCanEdit(true);
listPanel.setAutoSaveEdits(false);
listPanel.setSaveByCell(false);
listPanel.setEditOnFocus(true);
listPanel.setEditEvent(ListGridEditEvent.CLICK);
 

здесь создается редактируемое поле

 ListGridField manualScoreColumn = new ListGridField("score", "Score");
manualScoreColumn.setType(ListGridFieldType.INTEGER);
manualScoreColumn.setCanEdit(true);
manualScoreColumn.setValidateOnChange(true);
manualScoreColumn.setValidators(new IntegerRangeValidator());
 

проблема заключается в том, что данные в ListGrid фильтруются с помощью

 listPanel.setCriteria(criteria);
 

мы получаем такое исключение

 12:42:31.204:RDQ2:WARN:Log:TypeError: _5 is null
ListGrid._clearingInactiveEditorHTML() @ adminApp/sc/modules/ISC_Grids.js:1530
GridBody.redraw(_1=>false) @ adminApp/sc/modules/ISC_Grids.js:889
[c]Canvas.clearRedrawQueue() @ adminApp/sc/modules/ISC_Core.js:3300
[c]Class.fireCallback(_1=>{Obj},  _2=>undef,  _3=>[object Array],  _4=>{Obj}, _5=>true)
@ adminApp/sc/modules/ISC_Core.js:299
Timer._fireTimeout("$ir2251") @ adminApp/sc/modules/ISC_Core.js:1269
unnamed() @ adminApp/sc/modules/ISC_Core.js:1264
unnamed() @ 
 

Я нашел аналогичный вопрос здесь и здесь, но никакого решения предложено не было.

Существуют ли какие-либо обходные пути? Спасибо.

Ответ №1:

Убедитесь, что вы установили для ListGridField значение ListGrid

  listPanel.setFields(manualScoreColumn);
 

Другой способ установить для выбранного вами редактора значение ListGridField — использовать метод setEditorType

     ListGrid listPanel = new ListGrid();
    listPanel.setCanEdit(true);
    listPanel.setAutoSaveEdits(false);

    //You can use any formitem instead of date item,Say TextItem,SelectItem etc
    DateItem dateItem = new DateItem();
    ListGridField dateListGridField= new ListGridField("date", "Date");
    dateListGridField.setEditorType(dateItem);
    listPanel.setFields(dateListGridField);