UserControl中的Web控件是否为空?
我已经构建了一个小型用户控件,它本质上是一个DropDownList,带有一些基于Target-Property设置的预设值。
这是代码:
public partial class Selector : System.Web.UI.UserControl { public string SelectedValue { get {return this.ddl.SelectedValue; } } public int SelectedIndex { get { return this.ddl.SelectedIndex; } } public ListItem SelectedItem { get { return this.ddl.SelectedItem; } } private string target; public string Target { get { return this.target; } set { this.target = value; } } protected void Page_Load(object sender, EventArgs e) { ddl.DataSource = target=="Group"?Util.GetAllGroups(Session["sessionId"].ToString()):Util.GetAllUsers(Session["sessionId"].ToString()); ddl.DataBind(); } }
ASP-标记:
如果我将我的Selector插入到aspx-Page中,它就可以了。 例:
但是,如果我以编程方式添加它
ctrl = new Selector(); ctrl.Target = "User";
DropDownList“ddl”为null,应用程序(逻辑上)抛出错误。 Page_Load是错误的方法来做这样的事情吗? 我究竟做错了什么?
我应该补充一点,“ctrl”是动态类型,不确定这是否与它有关。
提前致谢!
丹尼斯
由于您是动态添加用户控件而不是“简单”Web控件,因此应使用LoadControl()方法对其进行实例化:
protected void Page_Load(object sender, EventArgs e) { Selector yourControl = (Selector) LoadControl("Selector.ascx"); yourControl.Target = "User"; Controls.Add(yourControl); }