在Web用户控件之间传递价值 - DifferentQuestion

时间:2008-12-17 22:57:00

标签: asp.net webusercontrols

我希望在Web用户控件之间传递值,而无需将任何代码写入用户控件所在的主页面。我做了类似的事情,但在这之后我需要点击double来传递值。

我做过的例子:

部门用户控制(代码隐藏)

        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 个答案:

答案 0 :(得分:1)

在“部门用户控制”中,您尝试在“产品用户控件”中设置之前获取selectedProductId的值。这就是为什么在你回发两次之前你没有得到你期望的值。

产品用户控件在ItemCommand事件中设置后,您需要获取它。也许将部门用户控制代码放在Page_LoadCompleted中......虽然我不确定这是否也可以。

另一种方法是让Product User Control在Department User Control中设置公共属性,而不是让Department User Control尝试读取Product User Control中的属性。

该问题似乎是页面生命周期问题。 http://www.robincurry.org/blog/content/binary/o_aspNet_Page_LifeCycle.jpg

我相信还有比这更好的方法。

答案 1 :(得分:0)

尝试使用委托更清晰地实现此目的,例如here