Изменение динамических элементов управления через DropDownList на странице содержимого - PullRequest
1 голос
/ 04 ноября 2010

Проблема : Страница содержимого с элементом управления Wizard с UpdatePanel и Placeholder.Над UpdatePanel находится DropDownList.Мне нужно отобразить различные элементы управления вводом под раскрывающимся списком, когда пользователь изменяет выбор в раскрывающемся списке.Когда пользователь нажимает «Далее» на элементе управления мастера, мне нужно иметь возможность также получать данные из этих динамических элементов управления.

Я знаю, что все динамические элементы управления должны быть созданы в методе OnInitЧтобы получить данные от этих элементов управления во время обратной передачи.Однако при возникновении события SelectedIndexChanged из раскрывающегося списка вызывается метод OnInit ... затем вызывается PageLoad ... и, наконец, вызывается обработчик события SelectedIndexChanged.ViewState не восстанавливался до тех пор, пока не были вызваны методы OnInit и PageLoad, поэтому невозможно узнать, что пользователь выбрал в списке в момент вызова OnInit ... что именно тогда, когда мне нужносоздать динамические элементы управления.

Итак ... как вы решаете эту проблему?Вам просто нужно написать всю страницу или большую ее часть, используя JavaScript?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2013

Вы также можете использовать asp: hiddenfield и установить значение для регистра, созданного вами мысленно.затем запустите небольшой скрипт jQuery сверху, чтобы посмотреть на

$(document).on("change", "#ddlSelector", setControls);

, затем просто создайте функцию, например:

function setControls(event) { 
    event.preventDefault();
    var selector = hiddenfield.val();
}

, тогда любой элемент, который можно показать / скрыть, можно сделать стэг:

$("#elementName").css("display", "inline"); 

или дисплей, скрывать некому.Я использовал это на работе, потому что иногда вам нужно изменить без запуска обратной передачи, но по-прежнему собирать данные, когда они задействуют форму.

Обычно я избегаю jQuery для многих событий из-за прочности кода и безопасности, но элемента DOMманипуляции с jQuery иногда могут быть намного проще.

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

Я склонен использовать метод старой школы для этого типа требований.Я написал бы все элементы управления, которые необходимы в панели обновления, с их свойством Visible, установленным в false.Затем при обратной записи прочитайте состояние раскрывающегося списка и установите для свойства Visible подходящих элементов управления значение true.Таким образом, нет «динамических» элементов управления, и из-за того, что элементы управления, для которых свойство Visible имеет значение false, не отображаются, они не загружаются, пока пользователь не увидит их.

...