注册 登录
编程论坛 ASP.NET技术论坛

[求助]关于动态加载的用户控件的事件处理问题

rstp 发布于 2007-04-16 10:06, 810 次点击

我写了一个两个用户控件,首先加载第一个控件,当点击第一个控件上的某个按钮时,动态加载第二个控件。用placeholder占位,使用ViewState保存状态,基本代码如下

if(ViewState["isFirstTime"] !=null)
{
UserControl control1 =(UserControl)LoadControl("HeaderLogout.ascx");
this.PlaceHolder1.Controls.Clear();
this.PlaceHolder1.Controls.Add(control1);
control1.ID="HeaderLogoutControl";
}
else
{
UserControl control = (UserControl)LoadControl("HeaderLogin.ascx");
this.PlaceHolder1.Controls.Add(control);
control.ID ="HeaderLoginControl";
ViewState["isFirstTime"] = 1;
}
可是如果我这样写的话,不论我点击第一个控件上的什么按钮都会加载第二个控件
如果我把if else去掉,只留一个加载的部分,如
UserControl control = (UserControl)LoadControl("HeaderLogin.ascx");
this.PlaceHolder1.Controls.Add(control);
control.ID ="HeaderLoginControl";
就可以触发 里面按钮的事件

求教高手

7 回复
#2
冰镇柠檬汁儿2007-04-16 10:15
加载一个html控件可能会好写一些
#3
skyland842007-04-16 10:20
我晕~!难道 你 第一个控建里的 事件不能写啊吗?
用户控建没有用过!不过也支持代码分离技术啊!
可以在第一个控建 的按钮事件里写上加载 第二个控建的 代码啊~!
这样不行吗?
#4
rstp2007-04-16 10:30
没敢试,因为如果写在第一个控件的按钮事件里面的话,因为我首先要清空这个控件,才能加载第二个,所以没敢写呵呵。。
现在发现问题所在了,是viewstate写错了地方,不过又出了一个问题,用placeholder加载控件,怎么控制加载的位置呢
#5
冰镇柠檬汁儿2007-04-16 10:34
不知道楼主的要求是不是第一个控件被选择之前,第二个控件不显示出来呢?
如果要是这样可以先将第二个控件隐藏的。

在写第二个控件的时候,你也可以试试用html控件,因为这种控件不需要后台的定义
#6
rstp2007-04-16 10:40

恩,谢谢斑斑提醒,是个不错的办法。我试试看。

#7
rstp2007-04-16 10:40
我开始忘了这个用户控件也能隐藏了哈。。。
#8
冰镇柠檬汁儿2007-04-16 10:41
8客气
1