Обновить Gridx с помощью JsonStore на мероприятии?

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

Контекст:

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

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

Цель:

На основе события click (или dblclick) для данного узла в дереве мне нужно загрузить данные 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/, без какого-либо «id» без какого-либо клика пользователя. Следовательно, сервер отвечает 405. Впоследствии, когда пользователь щелкает, снова тот же HTTP GET без «id» приводит к HTTP 405. Я не могу каким-то образом передать «id» URL-адресу GET. Я проверил JSON, он в идеальной форме, так как работает в отдельной таблице, которая определена декларативно.

Пожалуйста, предложите мне способы связать узел TREE через его «id» с Gridx. Также предложите, если подход, который я использую, является правильным способом решения этой проблемы.


person Venkat Ramana Peri    schedule 28.01.2013    source источник


Ответы (1)


Извините, непонимание вопроса. Я думал, что речь идет о дереве gridx, но это об обычном gridx, управляемом другим виджетом.

Проблема именно в этой строке:

console.log("Идентификатор %s получен.", id ); LatestTabGridxStore.idProperty = идентификатор;

«idProperty» — это имя атрибута JSON, в котором хранится идентификатор. Это не будет меняться с каждым выбором. Если он не установлен, JsonStore будет считать его идентификатором. Что вы намеревались сделать, так это изменить целевое свойство хранилища, чтобы включить идентификатор. Это можно сделать напрямую и будет выглядеть примерно так (детали зависят от приложения)

LatestTabGridxStore.target = (someURL) + '/' + id;

После этого содержимое gridx необходимо заменить, используя новую настройку хранилища. Есть несколько способов сделать это, самый простой — уничтожить текущий экземпляр gridx и заменить его другим, который использует измененное хранилище.

person janh    schedule 03.11.2013
comment
Пожалуйста, не используйте ответы, чтобы комментировать, просить о помощи или говорить что-то вроде «Эй, у меня тоже есть эта проблема», поэтому это было опубликовано как ответ, но он не пытается ответить на вопрос. Возможно, это должно быть редактирование, комментарий, другой вопрос или полное удаление. - person Fabio Antunes; 03.11.2013