2010-10-28 2 views
0

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

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 имеет вид: {значение: знач1}, но ничто не изменяется при выпадании ни одного из избранных виджетов. Если кто-то может оказать какую-либо помощь, это будет очень признательно. Спасибо

ответ

0

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

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

1

действительно ли выражение! Val1 нужно указывать?

+0

Да, я бы попробовал это ... так измените строку на: element.attr ("query", "{value: '!" + Event + "'}"); ... правильно? – JasonStoltz