2010-06-10 2 views
0

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

UC1 контролирует один ярлык

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

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

Теперь я поместил UC_Combined.ascx на моей странице ASPX WebForm1.aspx имеет еще один Лейбл servercontrol

Теперь, когда я запускаю мою страницу WebForm1.aspx я вижу увидеть Выпадающий список и этикетки

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

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

+0

Из любопытства, что вы пытаетесь достичь здесь? Элементы управления пользователя предназначены для повторного использования логики на нескольких страницах/элементах управления. Никогда не должно быть зависимых элементов управления BETWEEN (может быть родитель/ребенок, но не ребенок/ребенок) Почему бы не поместить выпадающий элемент управления/метку в элементе управления UC_Combined? – RPM1984

+0

Код пожалуйста. BTW вы можете использовать «Родитель» для доступа к родительскому элементу управления, а затем к ребенку, которого вы пытаетесь избежать. –

ответ

1

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

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

Думаете, у вас это есть?

+0

Ницца. +1.Сделать лучшее из плохой ситуации =) – RPM1984

1

Простой. Реализовать событие на ЯК, содержащей падение вниз, как:

public event EventHandler<DDSelectionChangedEventArgs> DDSelectionChanged; 

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

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

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

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

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