1

我想在 Web 用户控件之间传递值,而不向放置用户控件的主页写入任何代码。我做了类似的事情,但在这样做之后,我需要双击来传递值。

我所做的例子:

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

        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);
           }
        }

提前致谢...

4

2 回答 2

1

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

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

另一种方法是让产品用户控件在部门用户控件中设置公共属性,而不是让部门用户控件尝试读取产品用户控件中的属性。

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

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

于 2008-12-17T23:08:03.987 回答
0

尝试使用委托来更干净地实现这一点,例如这里

于 2010-03-09T06:12:38.157 回答