Интеллектуальная сетка списка Gwt: как проверить выбранные записи

#gwt #smartgwt

#gwt #smartgwt

Вопрос:

Я использую сетку списка smart gwt 2.5. В этом я использую флажок для простого выбора. ниже приведен код для этого:

     getGrid().setSelectionAppearance(SelectionAppearance.CHECKBOX);
        getGrid().setSelectionType(SelectionStyle.SIMPLE);
  

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

  public void setTestData(DataClass[] testData) {
    setAttribute("testData", testData, true);
}
  

Моя сетка правильно отображает данные.Теперь я хочу установить флажок для некоторых записей (строк) в зависимости от некоторого условия.Допустим, я хочу, чтобы были отмечены номера строк 1 и 5.

Для этого после отправки данных в источник данных я пишу приведенный ниже код для проверки данных:

     getGrid().selectRecord(1);` 
    getGrid().selectRecord(5);
  

Но не выполняет никаких операций с флажком, чтобы установить флажок.Я не понимаю, в какой момент я делаю ошибку.
то же самое, когда я пробовал без источника данных и передавал данные в сетку списка просто с помощью setdata, это работало.
Пожалуйста, помогите мне.Заранее спасибо

Комментарии:

1. Любой другой метод выбора записей также не работает.

Ответ №1:

При использовании источника данных, включая источник данных только для клиента, выборка данных выполняется асинхронно, поэтому ваши вызовы selectRecord() выполняются, когда данные еще не загружены. Дождитесь получения данных, прежде чем пытаться выбрать записи.

Комментарии:

1. Данные для сетки уже загружены. После этого я проверяю свое состояние, чтобы проверить запись.

2. Данные могут быть загружены в браузер и представлены в источнике данных только для клиента, но операция извлечения сетки из источника данных только для клиента по-прежнему асинхронна, даже если данные присутствуют в браузере. Вам не нужен обходной путь, вам просто нужно использовать DataArrived для ожидания загрузки данных.

Ответ №2:

Одна из работ, которая работает для меня, заключается в следующем: я удалил внешний вид выделения и выбранный тип из моей сетки и взял столбец для флажка, как показано ниже:

     NTListGridField customCheckBoxField = new NTListGridField("select", "Select", 25);
        customCheckBoxField.setAlign(Alignment.LEFT);
        customCheckBoxField.setType(ListGridFieldType.BOOLEAN);
        customCheckBoxField.setCanFilter(false);
        customCheckBoxField.setCanEdit(true);
        customCheckBoxField.setCanToggle(true);
  

Теперь для выбора записей,

 record.setAttribute("select", true);
  

Комментарии:

1. Это не является необходимым обходным решением и не исправит проблему, указанную выше; скорее всего, это обходное решение было предпринято одновременно с другими изменениями кода, которые фактически устранили проблему.