Выберите элемент в CascadingDropDown через JavaScript и вызовите обновление - PullRequest
3 голосов
/ 17 марта 2010

В коде позади я могу сделать что-то, чтобы выбрать:

// Select item in first DropDownList
myCascadingDropDown_1.SelectedValue = itemValue_1+":::"+itemText_1;

// Select item in second DropDownList
myCascadingDropDown_2.SelectedValue = itemValue_2+":::"+itemText_2;

Как я могу сделать это в JavaScript?

(Мне известно, что я могу искать в списке и устанавливать свойство selectedIndex для каждого раскрывающегося списка, но у меня есть много элементов, и я очень ленив.)

EDIT:

Ответ npups работает: я могу выбрать желаемый пункт в первом выпадающем списке. Проблема, однако, в том, что новые значения, основанные на этом выбранном элементе (это CascadingDropDown, помните?), Не отображаются во втором раскрывающемся списке, поэтому я не могу ничего там выбрать. Мне нужно было бы как-то вручную вызвать метод обновления второго выпадающего списка: какие-либо предложения?

Ответы [ 3 ]

2 голосов
/ 17 марта 2010

Я смог решить это:

1) С предложением npups мне удалось установить "myCascadingDropDown_1" на желаемое значение.

2) Использование

myCascadingDropDown_2.CascadingDropDownBehavior._onParentChange (нуль, нуль);

метод Мне удалось принудительно заполнить второй раскрывающийся список на основе нового выбранного значения «myCascadingDropDown_1».

3) Я написал таймер, чтобы периодически проверять, закончил ли второй выпадающий список повторное заполнение, и установить желаемое значение, если оно есть (снова используя ответ npups).

1 голос
/ 17 марта 2010

Проверьте это:

<select id="foo">
  <option value="bar">bar</option>
  <option value="baz">baz</option>
  <option value="bork">bork</option>
</select>

<script type="text/javascript">
  var selectElem = document.getElementById('foo');
  selectElem.value = 'baz';
</script>

Установка значения элемента select исправляет это.

Firefox понимает это правильно, даже если вы просто используете содержимое тегов в качестве значений (вместо указания значения в атрибуте значения параметра). Не уверен насчет других браузеров.

РЕДАКТИРОВАТЬ, больше материала:
То есть есть какой-то другой выбор (или эквивалент), который обновляется некоторой гармонизирующей функцией при изменении первого выбора?
Здесь у меня есть это в первом выборе onchange. Когда выбранный элемент устанавливается с помощью этой техники «установки значения», onchange не срабатывает. Тем не менее, можно вызвать функцию гармонизации вручную при изменении первого выбора. Ниже я показываю два разных способа (оба в комментариях).

<select id="foo" onchange="harmonize();">
  <option value="bar">bar</option>
  <option value="baz">baz</option>
  <option>bork</option>
</select>

<select id="foo2">
 <option value="0">This</option>
 <option value="1">That</option>
</select>


<script type="text/javascript">
   var select0 = document.getElementById('foo');
   var select1 = document.getElementById('foo2');
   select0.value = 'baz';
   // alternative 1: call harmonize();
   // alternative 2: call select0.onchange();

   function harmonize() {
     if (select0.value==='baz') {
       select1.value = '1';
     }
     else {
       select1.value = '0';
     }
   }
</script>

Я не стал прятать здесь глобальные переменные и т. Д., Но, конечно, это хорошая идея.

0 голосов
/ 11 августа 2010

вы также можете использовать myCascadingDropDown_2.set_SelectedValue (resultval, resultVal) вместо таймера (item3)

...