Привязка SmartGWT DataSource к ListGrid и DynamicForm - PullRequest
0 голосов
/ 20 сентября 2010

Прежде всего позвольте мне предупредить читателей, чтобы они не выдавали меня за ссылки в изоморфном виде, потому что весьма вероятно, что я прочитал его и поинтересовался, работает ли локальная витрина smartgwt, когда я задаю этот вопрос.То, что я спрашиваю, не задокументировано, и если это так, я не могу расшифровать и нуждаюсь в реальном объяснении здесь.Нет, не говорите мне о SmartGWT EE.В данном случае это чисто Smartclient, взаимодействующий с моим JSP (или perl, php) на стороне сервера, который я использую для взаимодействия с бэкэндом SAS.

Этот вопрос не имеет ничего общего с работой SAS.Я упоминаю SAS, чтобы проиллюстрировать, что smartclient должен взаимодействовать с веб-службой SAS напрямую, а не через сервер SmartGWT.Я задал похожий, но другой вопрос на форуме smartclient, который до сих пор остается без ответа, так что это, должно быть, очень сложная тема, и, вероятно, даже у людей изоморфных нет ответа.

У меня

  • JSON xjsondatasource url, созданный из веб-службы SAS, sasxjsondsrc.Я издеваюсь с JSP на Jetty.
  • sasxjsondsrc = id (primaryKey), имя, описание.
  • ListGrid, для которого datasrc установлен в sasxjsondsrc.
  • SearchForm / DynamicFormeditForm, для которого datasrc установлен в sasxjsondsrc.

Мне нужно

  • , пользователь будет визуально выбирать строку в listGrid, а затем нажимать кнопку del, после чего мой код вызовет listGrid.removeSelectedData (), которая затем удаляет только эту строку локально, а также отправляет в sasxjsondsrc url параметры id = id для удаления, операция = DEL.
  • пользователь будет визуально выбирать строку в listGrid и затем нажиматьКнопка «Изменить», которую мой код будет редактировать. Form.editSelectedData ().Когда пользователь нажимает кнопку «Сохранить», мой код запускает editForm.saveData (), который затем изменяет эту строку локально, а также отправляет в sasxjsondsrc URL-адреса параметров id = id, name =ified-value, description =ified-description,operation = MOD.
  • пользователь нажимал кнопку добавления, и мой код вызывал editForm.saveData (), который затем добавлял эту строку локально, а также отправлял sasxjsondsrc url параметры name = new-name, description= new-description, operation = ADD.

Это управление локальным сервером - это то, что smartclient рекламирует как преимущество.Проблемы:

  1. мой JSP не регистрирует смарт-клиента, отправляющего какой-либо параметр, чтобы указать, какую операцию следует выполнить.Он получает только поля источника данных = значения в качестве параметров для затронутых записей.
  2. записи не добавляются и не изменяются локально для операций добавления или редактирования.
  3. для преодоления проблемы (1), Iпопытался предоставить дополнительное не отображаемое поле источника данных под названием операция.Но когда к этому источнику данных привязана динамическая форма, поле динамической формы не позволит мне успешно программно изменить поле операции.
  4. Я пытался добавить операцию как DSRequest, но мой JSP также не получает ее.

КАК мой JSP знает, какая операция (ДОБАВИТЬ / УДАЛИТЬ / РЕДАКТИРОВАТЬ) выполняется?

ОК, если коротко, источник данных в SmartGWTужасно сложный бизнес.Мне посоветовали использовать SmartGWT только для его пользовательского интерфейса, но я должен избегать использования источника данных SmartGWT, потому что с ним слишком сложно работать.Не могли бы вы опубликовать или связать меня с примерами того, как вы выполняли программирование вашего клиента SmartGWT в конфигурации, аналогичной моей.

Должен ли я вернуться к использованию архитектуры ячеек / страниц GWT 2.1M3 и написать свои собственные ячейки rpc-таблицы?Форма ссылки?

1 Ответ

3 голосов
/ 01 октября 2010

Я думаю, что вам действительно нужно искать источники данных SmartGWT, в частности, RestDataSource и, вполне возможно, метод DataSource.setOperation () .

...