Обновите Gridx с JsonStore, по событию?

Я новичок в веб-интерфейсе, Dojo, Java и т. Д. Если вы имеете в виду какие-либо предварительные темы, пожалуйста, дайте некоторые ссылки для чтения. Это поможет.

Контекст:

  1. У меня есть дизайн Gridx с использованием JsonStore, который принимает целевой + идентификатор для URL. С фиксированным "id" Grid загружается хорошо.

  2. У меня есть Динамическое Дерево. Работает нормально с отложенной загрузкой и т. Д.

Задача:

Основываясь на событии click (или dblclick) для данного узла в Tree, я должен загрузить Gridx с данными. Следовательно, если щелкнуть узел дерева "id":7, то JsonStore: /target/7 должен быть выбран и загружен в Gridx.

Вопросы:

  1. Как вы можете догадаться, при запуске нет действительного свойства "id" для заполнения в JsonStore. В обработчике событий клика по дереву я получу это значение при клике пользователя. Следовательно, нельзя вызвать gridx.startup() в "готово". Хотя я "поместил" виджет в "готово".

  2. Следовательно, у меня есть следующий фрагмент кода, <


  // 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 и заменить его другим, использующим измененное хранилище.

Другие вопросы по тегам