2009-10-29 3 views
3

У меня есть два виджета DropDownSelect, добавленные к нему из того, что мне нужно, - это динамически загружать данные во втором виджете DropDownSelect, поскольку первый виджет DropDownSelect изменяет способ загрузки данных в виджет DropDownSelect programitacally.dojo динамически загружает виджет DropDownSelect

Абдул Халик

ответ

5

Я думаю, что нужно что-то как это:

 dojo.connect(s1, 'onChange', function(value) { 

     console.log(value); // selected in s1 value 

     s2.addOption([{ 
     label: "new option1", value: 1 
     }, 
     { 
     label: "new option2", value: 2 
     }, 
     { 
     label: "new option3", value: 3 
     }]); 
    }); 

в этом примере выше, при выборе значения s1 изменений, мы загружаем 3 новые опции INTO s2. Вы можете передать только один вариант метода addOption вместо массива:

s2.addOption({ label: "new option1", value: 1 } 

Возможно, вы также хотите очистить s2 первый:

s2.options = []; 
+0

Да, это именно то, что мне нужно, еще одна вещь, которую я использую Struts2 для загрузки данных с помощью SMD-метода. Вышеприведенный код работает отлично, если я жестко кодирует значения в javascript, но когда я загружаю строку Json со стороны сервера, функция не работает. вот мой код скрипта java. dojo.connect (s1, 'OnChange', функция (значение) { console.log (значение); // выбрано значение s1 вар valuefromserver = "{этикетке: \" новый option1 \», значение: 1 }, {label: \ "new option2 \", value: 2}, {label: \ "new option3 \", value: 3} "; s2.addOption ([valueFromServer]); }); любые предложения –

+0

Ваш код не работает, потому что valuefromserver является строкой, но должен быть массивом (объект javascript). Я не знаю о Struts, но в dojo.xhrGet вы можете указать опцию «handleAs: json» для автоматического преобразования строки сервера в объект. Просто чтобы заставить вас работать с кодом, вы можете вручную преобразовать строку в объект JS: valuefromserver = dojo.fromJson ("[" + valuefromserver + "]"); , а затем позвоните: s2.addOption (valuefromserver); добавить опции – ivalkeen

+0

отлично !! Большое спасибо за помощь –

1

DropDownSelect имеет метод «OnChange», который вы можете пройти анонимную функцию, которая строит список опций для второго выбора, используя нечто вроде addOption:

var s1 = new dojox.form.DropDownSelect(); 
var s2 = new dojox.form.DropDownSelect(); 
s1.onChange(function() { 
    s2.addOption(new Option("text","value")); 
}); 
+0

Спасибо за помощь! Еще одна вещь, когда я добавляю новую опцию, элемент управления не обрабатывается должным образом, то есть виджет выпадает с новой опцией, но с пустым текстом. Я вижу пустой, но расширяющийся раскрывающийся список. –

+0

ia с использованием разметки и получения ссылки на виджете dijit.byId (...) и с помощью добавления метода Option для добавления опции –

+0

также я вижу значение выбранного параметра во втором dropdownselect в диалоговом окне изменения, когда я выбираю его. –

Смежные вопросы