Я создал небольшой пользовательский элемент управления, который, по сути, представляет собой 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-Markup:
<%@ 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" равен нулю, и приложение (логически) выдает ошибку. Является ли Page_Load неправильным методом для такой вещи? Что я делаю не так?
Я должен добавить, что "ctrl" относится к типу динамического, не уверен, имеет ли это какое-либо отношение к нему.
Заранее спасибо!
Денис