Привязка SmartGWT DataSource к ListGrid и DynamicForm
Во-первых, позвольте мне предупредить читателей, чтобы они не выдавали меня за ссылки в изоморфном виде, потому что весьма вероятно, что я прочитал его, и я пробежался по витрине smartgwt, работающей здесь, когда задаю этот вопрос. То, что я спрашиваю, не задокументировано, и если это так, я не могу расшифровать и нуждаюсь в реальном объяснении здесь. Нет, не говорите мне о SmartGWT EE. В данном случае это чисто Smartclient, взаимодействующий с моим JSP (или perl, php) на стороне сервера, который я использую для взаимодействия с бэкэндом SAS.
Этот вопрос не имеет ничего общего с тем, как работает SAS. Я упоминаю SAS, чтобы проиллюстрировать, что smartclient должен взаимодействовать с веб-службой SAS напрямую, а не через сервер SmartGWT. Я задал похожий, но другой вопрос на форуме smartclient, на который до сих пор нет ответа, так что это, должно быть, очень сложная тема, на которую, вероятно, даже люди изоморфные не имеют ответа.
я имею
- URL-адрес JSON xjsondatasource, созданный из веб-службы SAS sasxjsondsrc. Я издеваюсь с JSP на пристани.
- sasxjsondsrc = id (primaryKey), имя, описание.
- ListGrid, для которого datasrc установлен в sasxjsondsrc.
- SearchForm / DynamicForm editForm, для которого 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, операция =MOD.
- пользователь нажимал кнопку добавления, и мой код вызывал editForm.saveData(), который затем добавлял эту строку локально, а также отправлял в sasxjsondsrc url параметры name=new-name, description=new-description, operation=ADD.
Это управление локальным сервером - это то, что smartclient рекламирует как преимущество. Проблемы
- мой JSP не регистрирует смарт-клиента, отправляющего какой-либо параметр, чтобы указать, какую операцию следует выполнить. Он получает только поля источника данных = значения в качестве параметров для затронутых записей.
- записи не добавляются и не изменяются локально для операций добавления или редактирования.
- Чтобы преодолеть проблему (1), я попытался предоставить дополнительное не отображаемое поле источника данных под названием операция. Но когда динамическая форма связана с этим источником данных, поле динамической формы не позволит мне успешно программно изменить поле операции.
- Я попытался добавить операцию как DSRequest, но мой JSP также не получает ее.
КАК мой JSP знает, какая операция (ADD/REMOVE/EDIT) выполняется?
Хорошо, коротко говоря, источник данных в SmartGWT - ужасно сложный бизнес. Мне посоветовали использовать SmartGWT только для его пользовательского интерфейса, но я должен избегать использования источника данных SmartGWT, потому что с ним слишком сложно работать. Могли бы вы опубликовать или связать меня с примерами того, как вы выполняли программирование вашего клиента SmartGWT в конфигурации, аналогичной моей.
Должен ли я вернуться к использованию архитектуры ячеек / страниц GWT 2.1M3 и написать собственную ссылку на ячейку rpc-таблицы?
1 ответ
Я думаю, что вам действительно нужно искать источники данных SmartGWT, в частности RestDataSource и, возможно, метод DataSource.setOperation().