Передача значения между пользовательскими веб-элементами управления - DifferentQuestion

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

Пример того, что я сделал:

Управление пользователями (Code-Behind)

        protected void Page_Load(object sender, EventArgs e)
        {
            int productId = ProductUserControl.selectedProductId;
            ... doing some bind work with productId


        }

Пользовательский контроль продукта

        public static int selectedProductId;
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void lvDepartments_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
        if (e.CommandName == "selectDepartment")
           {
              selectedProductId = int.Parse(e.CommandArgument);
           }
        }

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

2 ответа

Решение

В вашем пользовательском контроле отдела вы пытаетесь получить значение selectedProductId до того, как оно будет установлено в пользовательском контроле продукта. Вот почему вы не получите ожидаемого значения, пока не отправите ответ дважды.

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

Еще один способ сделать это - установить контроль пользователя продукта в Public User Control в качестве общего свойства вместо того, чтобы пользовательский контроль Department пытался прочитать свойство в User User Control продукта.

Похоже, проблема связана с жизненным циклом страницы. http://www.robincurry.org/blog/content/binary/o_aspNet_Page_LifeCycle.jpg

Я уверен, что есть и лучший способ.

Попробуйте использовать делегатов, чтобы добиться этого более четко, пример здесь

Другие вопросы по тегам