【发布时间】:2011-08-02 07:15:51
【问题描述】:
我有一个包含下拉列表的表单, 在索引更改方法上,我将使用用户选择的参数调用我的用户控件类 .cs,当我将代码放入索引更改时,如下所示,它不起作用,这是正常行为:
protected void ResourceTypesDDL_SelectedIndexChanged(object sender, EventArgs e)
{
....
MyUsercontrol c = new MyUSercontrol(....);
this.panel.controls.add(c);
}
这就是为什么我必须将代码放在我的 onload 方法中,但问题是我怎么知道是否是导致回发的 ddl?有属性吗?还是我应该使用 page.Request.Params.Get("__EVENTTARGET") 技术? 非常感谢!
【问题讨论】:
-
将此代码放在事件处理程序中应该可以正常工作,但是当您向树动态添加控件时,您还必须在每个 other 的页面初始化中调用它i> 回发。将用户控件添加到标记然后只需切换
Visible属性,或者如果需要多个控件,则使用Repeater可能会容易十亿倍。 -
所以我把我的代码放在 init 里面,并添加一个转发器,并且没有 selectedIndexChanged 方法?
-
如果您需要一个控件的多个实例,
Repeater是一种简单的方法。假设您在这些控件中显示一些数据,将这些数据保存在列表中(例如List<MyData>),其中MyData是包含您的数据的类。在每个页面加载或初始化时将此数据绑定到转发器。在SelectedIndexChanged事件中,将一个项目添加到列表中。将列表存储在Session中。不再需要繁琐的动态控制代码! -
或者,如果您想要动态控制路线,这是必不可少的阅读:weblogs.asp.net/infinitiesloop/archive/2006/08/25/…2800_Part-1_2900.aspx
-
@Umar:这取决于我的查询字符串,它并不总是一个用户控制 :)
标签: asp.net user-controls drop-down-menu postback