dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

DropDownList внутри CompositeControl

Останнє повідомлення 02-03-2008, 12:55 від Mike Chaliy. 5 відповіді.
Сортувати: Попереднє Наступне
  •  28-02-2008, 2:48 5540

    DropDownList внутри CompositeControl

    Подскажите пожалуйста где можно почтить или объясните как правильно сделать такую простую вроде бы вещь как CompositeControl внутри которого создаётся DropDownList, так чтобы все свойства ddl можно было задавать и данные привязывать и выбранное значение получать в любой момент как у обычного ddl. В интернете есть множество примеров, одни используют ChildControlsCreated = false другие EnsureChildControls(), но так до конца всё связать не смог, теряется ViewState. Помогите.
    Помічено як:
  •  28-02-2008, 3:22 5542 у відповідь на 5540

    Re: DropDownList внутри CompositeControl

    Потрібно написати свої методи XXXXViewState. Наприклад  в CompositeControl переписуємо SaveViewState() так щоб він зберігав і base.SaveViewSatate() і ddl.SaveViewState(), для цього до речі є клас System.Web.UI.Pair.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  28-02-2008, 4:12 5545 у відповідь на 5542

    Re: DropDownList внутри CompositeControl

    У DropDownList нет паблик метода SaveViewState и к IStateManager он не приводится. Можно пожалуйста поподробней. И как лучше оформлять свойства для доступа к внутреннему ddl? Хочется разобраться.
  •  28-02-2008, 5:16 5550 у відповідь на 5545

    Re: DropDownList внутри CompositeControl

    xiety:
    У DropDownList нет паблик метода SaveViewState и к IStateManager он не приводится. Можно пожалуйста поподробней. И как лучше оформлять свойства для доступа к внутреннему ddl? Хочется разобраться.

    Хм, так, щось мабуть в голові сплуталось ;).

    Дава, краще я розповім як воно планувалось ;)

    CompositeControl повинен мати всю інфу, тобто мається на увазі що наприклад DataItems (колекція ітемов яку ми потім будемо показувати в DDL). Далі в CreateChildControls створюється DDL, налаштовуються айтеми, асайняться евенти, тощо. Все інше робить вже сам CompositeControl. В чьому випадку SaveViewState повинен зберегати тільки те що ти там налаштував.

    Добрий приклад можна знайти в System.Web.UI.WebControls.Login.

    В твоєму випадку ти хочеш щоб контрол сам все робив. Можливо тобі краще скористатися UserControlом. Якщо я не помиляюсь то там стейт буде зберігатися без проблем.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
  •  28-02-2008, 5:51 5551 у відповідь на 5550

    Re: DropDownList внутри CompositeControl

    Спасибо. Интересуют две вещи, что делать, когда меняются проперти CompositeControl после того как вызвался CreateChildrenControl (ставить ли ChildControlsCreated = false или ещё как, ибо от свойств зависит количество создаваемых контролов) и что всё же делать если нет возможности использовать UserControl.. Login изучаю потихоньку, так понял что они создают контролы все один раз, а потом меняют их свойства и Visibility. Буду пробовать так, но с RecreateChildControls всё куда проще казалось.
  •  02-03-2008, 12:55 5564 у відповідь на 5551

    Re: DropDownList внутри CompositeControl

    xiety:
    что делать, когда меняются проперти CompositeControl после того как вызвался CreateChildrenControl (ставить ли ChildControlsCreated = false или ещё как, ибо от свойств зависит количество создаваемых контролов)

    Це один з можливих шляхів, той же Login використовує це. Але певне краще поєднувати це з тим же керуванням візібіліті.


    MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)
Переглядати як новосний Блог RSS в XML