Smartclient GWT делает поле ListGridRecord редактируемым с использованием пользовательского источника данных - PullRequest
2 голосов
/ 03 февраля 2010

Мы используем библиотеку SmartClient GWT (см. Демонстрацию SmartClient GWT здесь ).

Я пытаюсь создать интерфейс ListGrid, чтобы при нажатии на запись поля становились редактируемыми. Как в примере:

Разница в том, что я использую свои собственные пользовательские сервисы GWT RPC и вручную добавляю ListGridRecord в свой собственный DataSource, и я вижу, что мои записи появляются, но поля не редактируются при щелчке. Я создал собственный источник данных, используя реализацию GWTRPCDataSource , и корректно переопределил метод executeFetch.

Существует ли какая-либо специальная обработка, использующая примеры XML DataSource, который создает ListGridRecords, который правильно настраивает его для редактирования?

Например, я использую CountryXMLDS.java точно так же, как пример, за исключением того, что я добавляю одну пользовательскую запись (и я удалил все поля, кроме поля совокупности, которое я хочу редактировать). Я вижу, что моя запись появляется, но поле НЕ доступно для редактирования при щелчке записи.

    ListGridField populationField = new ListGridField("population", "population");
    populationField.setType(ListGridFieldType.INTEGER);
    populationField.setCanEdit(true);

   countryGrid.setFields( populationField);

    countryGrid.setCanEdit(true);
    countryGrid.setEditEvent(ListGridEditEvent.CLICK);


    ListGridRecord record = new ListGridRecord();
    record.setAttribute("population", "5");
    CountryXmlDS.getInstance().addData(record);

1 Ответ

1 голос
/ 09 февраля 2010

Какова бы ни была проблема, она не в деталях, которыми вы поделились. Попробуйте эти шаги:

  1. убедитесь, что вы вызываете setDataSource () в ListGrid с вашим DataSource

  2. убедитесь, что имя вашего поля ListGrid совпадает с полем из источника данных. Это чувствительно к регистру

  3. убедитесь, что у вас есть ключ primaryKey, объявленный в источнике данных. Нет способа сохранить изменения, если нет способа идентифицировать записи

  4. поиск сообщений в консоли разработчика

    http://forums.smartclient.com/showthread.php?t=8159#aConsole

  5. Подход к дробовику: переопределить ListGrid.canEditCell () и вернуть все, что вы хотите - это переопределит все декларативные настройки, такие как field.canEdit.

...