Передача значения из одного пользовательского элемента управления в другой пользовательский элемент управления - PullRequest
0 голосов
/ 10 июня 2010

У меня есть три пользовательских элемента управления uc1.ascx, uc2.ascx, UC_Combined.ascx

UC1 имеет один элемент управления меткой

UC2 имеет один элемент управления Dropdownlist

UC_Combined создается путем объединения UC1 и UC2

Теперь я разместил UC_Combined.ascx на своей странице aspx. У webForm1.aspx есть еще один элемент управления сервером Label

Теперь, когда я запускаю свою страницу webForm1.aspx, я вижу список DropDown и метку

Теперь, когда я выбираю элемент из выпадающего списка, я хочу, чтобы значение выделенного элемента отображалось на метке

Может кто-нибудь подсказать мне, как я могу это сделать.

Ответы [ 2 ]

1 голос
/ 26 августа 2010

Легко.Реализуйте событие в UC, содержащее раскрывающийся список, например:

    public event EventHandler<DDSelectionChangedEventArgs> DDSelectionChanged;

    public virtual void OnDDSelectionChanged(DDSelectionChangedEventArgs e)
    {
        if (DDSelectionChanged != null)
        {
            DDSelectionChanged(this, e);
        }
    }

Выбранный обработчик изменения dd должен затем вызвать OnDDSelectionChanged.

Зарегистрировать обработчик для этого события на вашей странице (ASPX).Этот обработчик должен затем вызвать что-то вроде ChangeText (текст) на втором UC с текстовым полем.И текстовое поле обновлено.

Таким образом, связь между UC управляется событиями, и страница имеет возможность подключать события.ОК полностью независимы.

1 голос
/ 10 июня 2010

Не лучше создавать зависимость между родительским и дочерним элементами управления. Что-то, что вы должны избегать. Но если вам нужно сделать это или каким-то образом облегчить вашу жизнь, то есть несколько методов для достижения этой цели, в то же время удерживая элементы управления в некотором роде. Я бы посоветовал вам сделать следующее:

  1. Реализовать обработчик PostBack, который будет хранить значение DropDownList в коллекции «Items» HTTP-контекста (через HttpContext.Current.Items ["ddlValue"] = val). Коллекция "Items" - это хеш-таблица, которая имеет срок службы одного HTTP-запроса. Это означает, что он очищается после ответа на текущий HTTP-запрос. Это удобный и легкий способ передачи данных между компонентами.
  2. Реализуйте свойство в UC1, которое лениво загружает значение из коллекции «Items» и ссылается на свойство в вашей разметке с помощью синтаксиса <% =%>. Делая это таким образом, вы гарантируете, что вы не пытаетесь получить значение до Render (то есть, когда выполняется код <% =%>), задолго до того, как было выполнено событие обработчика PostBack и добавлена ​​запись «Items». , Таким образом, вы можете делать все в одном PostBack.

Думаешь, ты понял?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...