1

米国の州を含むドロップダウンリストが必要です。さまざまなページでこのドロップダウンリストが必要になる可能性があります。状態ごとに常に listitem を作成する代わりに、単純なコントロールが必要です。UserControl は必要ありません。既存のドロップダウン リスト コントロールを拡張したいのです。以前の雇用主でこれを行ったことがあることは知っていますが、私の人生では、その方法を思い出せません!

州ごとにこのようなことをすることはできませんか?もしそうなら、どこですか?

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

そこに何かアイデアはありますか?

ありがとう

4

4 に答える 4

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 を参照する必要がある場合があります。私はそれについて何かを覚えていると思いますが、それをしなければならなかったのは久しぶりです。

于 2009-02-26T19:04:55.513 に答える
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"));

    }
}
于 2009-02-26T19:31:58.317 に答える
0

DropDownList コントロールを拡張し、OnLoad イベントをオーバーライドして、そのような項目を追加します。

protected override void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        this.Items.Add(new ListItem("Illinois","IL"));
    }
}
于 2009-02-26T19:11:05.920 に答える
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
于 2009-02-26T19:21:28.373 に答える