Обновите Gridx с JsonStore, по событию?
Я новичок в веб-интерфейсе, Dojo, Java и т. Д. Если вы имеете в виду какие-либо предварительные темы, пожалуйста, дайте некоторые ссылки для чтения. Это поможет.
Контекст:
У меня есть дизайн Gridx с использованием JsonStore, который принимает целевой + идентификатор для URL. С фиксированным "id" Grid загружается хорошо.
У меня есть Динамическое Дерево. Работает нормально с отложенной загрузкой и т. Д.
Задача:
Основываясь на событии click (или dblclick) для данного узла в Tree, я должен загрузить Gridx с данными. Следовательно, если щелкнуть узел дерева "id":7, то JsonStore: /target/7 должен быть выбран и загружен в Gridx.
Вопросы:
Как вы можете догадаться, при запуске нет действительного свойства "id" для заполнения в JsonStore. В обработчике событий клика по дереву я получу это значение при клике пользователя. Следовательно, нельзя вызвать gridx.startup() в "готово". Хотя я "поместил" виджет в "готово".
Следовательно, у меня есть следующий фрагмент кода, <
// this function is called from tree event handler
function LatestTabGridxLoad( id ) {
console.log( "ID %s fetched.", id );
LatestTabGridxStore.idProperty = id;
LatestTabGridx.startup();
LatestTabGridx.body.refresh();
}
ready(function()
{
TabLatestAssetTree.startup();
LatestTabGridx.placeAt( "ReportMiddleTabLatestCenterContainer" );
}
Теперь проблема заключается в том, что при первой загрузке JsonStore GET запускается с /target/ alone без какого-либо "id" без какого-либо щелчка пользователя. Следовательно, сервер отвечает 405. Впоследствии, когда пользователь нажимает, снова тот же HTTP GET без "id" приводит к HTTP 405. Я не могу каким-то образом передать "id" в URL GET. Я проверил JSON, он в отличной форме, так как работает в отдельной таблице, которая определена декларативно.
Пожалуйста, предложите мне способы связать узел TREE через его "id" с Gridx. Также предложите, если подход, который я использую, является правильным способом решить эту проблему.
1 ответ
Извините, недоразумение вопроса. Я думал, что это было о дереве gridx, но это о регулярном gridx, управляемом другим виджетом.
Проблема в этой строке:
console.log ("ID% s fetched.", id); LatestTabGridxStore.idProperty = id;
'idProperty' - это имя атрибута JSON, в котором хранится идентификатор. Это не изменится с каждым выбором. Если он не установлен, JsonStore будет считать его идентификатором. Вы намеревались изменить целевое свойство магазина, чтобы оно включало идентификатор. Это может быть сделано напрямую и будет выглядеть примерно так (подробности зависят от приложения)
LatestTabGridxStore.target = (someURL) + '/' + id;
После этого содержимое gridx необходимо заменить, используя новую настройку магазина. Есть несколько способов сделать это, самый простой - уничтожить текущий экземпляр gridx и заменить его другим, использующим измененное хранилище.