【发布时间】:2011-08-16 20:57:03
【问题描述】:
我构建了一个小型用户控件,它本质上是一个 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 标记:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Selector.ascx.cs" Inherits="InspireClient.CustomControls.Selector" %>
<asp:DropDownList runat="server" ID="ddl">
</asp:DropDownList>
如果我将我的选择器插入一个 aspx 页面,它就可以正常工作。 示例:
<SCL:Selector Target="Group" runat="server" />
但是,如果我像这样以编程方式添加它
ctrl = new Selector();
ctrl.Target = "User";
DropDownList "ddl" 为 null 并且应用程序(逻辑上)抛出错误。 Page_Load 是错误的方法来做这样的事情吗?我做错了什么?
我应该补充一下,“ctrl”是动态类型的,不确定这是否与它有关。
提前致谢!
丹尼斯
【问题讨论】:
标签: c# asp.net dynamic user-controls pageload