我希望在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);
}
}
提前致谢...
答案 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