2009-02-26 74 views
1

我需要一个与美国国家关联的下拉列表。我可能需要在各种页面上使用此下拉列表。我不需要总是为每个状态创建一个listitem,而是需要一个简单的控制。我不想要UserControl - 我想扩展现有的dropdownlist控件。我知道我以前曾经在前雇主那里做过这件事,但对于我的生活,我不记得如何去做!自动添加商品的自定义下拉列表

难道我不能只为每个州做这样的事吗?如果是这样,在哪里?

MyBase.Items.Add(New ListItem("Illinois","IL")) 

有没有想法吗?

感谢

回答

2

所有你需要做的是从相应的控件创建一个新的类,并继承:

/// <summary> 
/// </summary> 
[DefaultProperty("DataTable"), 
    ToolboxData("<{0}:ExtendedDropDownlist runat=server></{0}:ExtendedDropDownlist>")] 
public class ExtendedDropDownList : DropDownList 


    /// <summary> 
    /// Render this control to the output 
    /// parameter specified. 
    /// </summary> 
    /// <param name="output"> The HTML writer to 
    /// write out to </param> 
    protected override void Render(HtmlTextWriter output) 
    { 
     //output.Write(Text); 
     base.Render(output); 
    } 

在构造函数中只需添加相应的列表框中的项目,如您有。

您可能需要将其放入不同的项目并引用dll。我想我记得有关此事的一些事情,但自从我必须这样做以来已经有一段时间了。

+0

其实我已经试过了,但没有这样的运气。 – 2009-02-26 19:06:55

+0

尝试把它放在一个不同的项目,并退出dll。 – kemiller2002 2009-02-26 19:10:37

+0

已经完成先生。 – 2009-02-26 19:12:11

0

扩展DropDownList控件并重写OnLoad事件,并添加您的项目那样:

protected override void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.Items.Add(new ListItem("Illinois","IL")); 
    } 
} 
0
<ToolboxData("<{0}:StateDropDownList runat=server></{0}:StateDropDownList>")> _ 
Public Class StateDropDownList 
    Inherits DropDownList 

    Protected Overrides Sub RenderContents(ByVal output As HtmlTextWriter) 
     output.Write(Text) 
    End Sub 

    Protected Overrides Sub RenderChildren(ByVal writer As System.Web.UI.HtmlTextWriter) 
     MyBase.RenderChildren(writer) 
    End Sub 


    Private Sub LoadStates() 
     MyBase.Items.Add(New ListItem("Alabama", "AL")) 
     'Additional states removed for size 
     MyBase.Items.Add(New ListItem("Wyoming", "WY")) 
    End Sub 

    Public Sub New() 
     'tried does not work 
     ' LoadStates() 
    End Sub 

    Private Sub StateDropDownList_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 
     'tried does not work 
     ' LoadStates() 
    End Sub 


    Private Sub StateDropDownList_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     'tried does not work 
     'If Not Page.IsPostBack Then 
     ' LoadStates() 
     'End If 
    End Sub 

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) 
     MyBase.Render(writer) 
    End Sub 
End Class 
0
public class DropDownListStates : System.Web.UI.WebControls.DropDownList 
{ 
    protected override void CreateChildControls() 
    { 
     if (Items.Count > 0) return; 

     Items.Add(new System.Web.UI.WebControls.ListItem("AL")); 

     // other states here... 

     Items.Add(new System.Web.UI.WebControls.ListItem("WY")); 

    } 
}