Dojo Select виджет не выборочно запрашивает содержимое из хранилища данных - PullRequest
0 голосов
/ 28 октября 2010

Я пытался использовать функциональность запросов ItemFileReadStore, чтобы отфильтровать список доступных для выбора виджетов, и кажется, что мои запросы не влияют на виджет.Запрос выполняется через событие onChange другого виджета select, моя цель состоит в том, чтобы, когда один виджет выбирал значение, другой больше не содержал это значение в качестве опции).Это выглядело довольно просто, если взглянуть на пример «Codependent FilteringSelect / ComboBox» на сайте документации dojo .Но следование этому примеру оставило меня безрезультатно.Мой виджет, который я пытаюсь использовать ниже:

var sel1 = new dijit.form.Select({
                id:"sel1",
                name: "sel1",
                required: true,
                style: "width: 170px;",
                query: {value: "*" },
                store: selStore
        },"sel1");

У меня также есть другой виджет sel2, который похож и использует тот же магазин.Мое событие 'onChange' для обоих имеет следующий код:

 dojo.connect(element, 'onChange', function(event){
                            dojo.forEach([sel1, sel2], function(element){
                                    if(element.getValue() !== event){
                                            element.attr("query", "{value: !" + event + "}");
                                            console.log("querying", element, element.query);
                                            element.store.fetch();
                                    }
                            });

В результате этого полученная мной распечатка консоли возвращает правильный элемент, а element.query имеет вид: {value:! Val1}, но в выпадающем меню любого из выбранных виджетов ничего не изменяется.Если бы кто-то мог оказать какую-либо помощь, это было бы очень ценно.Спасибо

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

нужно ли выражение! Val1 заключать в кавычки?

0 голосов
/ 15 ноября 2010

После некоторого поиска и экспериментов я обнаружил, что dijit.form.Select не работает как виджет Filtered Select, когда дело касается запросов к его хранилищу данных. Чтобы запросить хранилище данных, вы должны вызвать метод setStore, передав ему то же хранилище, которое используется в данный момент, и объект запроса в форме fetchArg (т.е. {query: {value: blah}}). Смотрите документацию здесь .

Для второй половины вопроса о том, как выяснить, как исключить опции из хранилища в результате извлечения всех значений! = Значение1, вы можете использовать хранилище, предназначенное для этих типов запросов, известное как AndOrReadStore * 1006. * который выходит из ItemFileReadStore и совместим с виджетом dijit.form.Select и просто использует ключевое слово NOT.

...