2009-02-26 71 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")); 

    } 
}