Frage

Ich mag die eingebauten in Dropdownlist in ASP.NET zu Unterklasse, so dass ich Funktionalität hinzufügen kann und es in meinen Seiten. Ich habe versucht, dies mit einem Usercontrol zu tun fand aber, dass es nicht die interne Dropdown aussetzt (logisch, ich denke). Ich habe für die Antwort googeln kann aber nichts finden.

Ich habe so weit kommen, wie die aktuelle Klasse zu schreiben, und es ist möglich, von Dropdownlist, Unterklasse, aber ich bin nicht in der Lage, die Datei in meiner ASP.NET-Seite zu registrieren und es in der Quellansicht verwenden. Ich habe einige Eigenschaften in meiner Klasse Vielleicht fehlt?

Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie möchten in einer Dropdownlist Custom Control ... nicht in einem Usercontrol verlängern.

Erstellen

ein neues Klassenbibliotheksprojekt namens MyLibrary.

Fügen Sie eine Klasse namens MyDropDownList.cs

namespace My.Namespace.Controls
{
[ToolboxData("<{0}:MyDropDownList runat=\"server\"></{0}:MyDropDownList>")]
public class MyDropDownList: DropDownList
{
    // your custom code goes here
    // e.g.
    protected override void  RenderContents(HtmlTextWriter writer)
    {
        //Your own render code
    }
}
}

Wenn Sie Ihre Bibliothek kompilieren, Sie einen Verweis auf sie in Ihre Web-Anwendung hinzufügen können.

Und ein TagPrefix in Ihrer web.config

    <add tagPrefix="my" namespace="My.Namespace.Controls" assembly="MyLibrary" />

Das sollte Ihnen ermöglichen, diese zu Ihrem aspx / ascx des hinzuzufügen

<my:MyDropDownList ID="myDDl" runat="server">
    ...
</my:MyDropDownList>

Andere Tipps

In einem Kommentar, Sie klären Ihr Ziel: „Das einzige, was ich mit ihm tun möchte, ist eine Initial Eigenschaft hinzufügen, die den ersten Wert definiert, der immer in der DDL ist“

Ich glaube nicht, benötigen Sie eine spezielle Benutzersteuerung oder benutzerdefiniertes Steuerelement zu erstellen, das zu erreichen.

Ich verwende oft diesen Code in meinen Web-Anwendungen Liste Kontrollen zu füllen. Sie übergeben in einer Bedingung, die anzeigt, ob eine zusätzliche ListItem ist an der Spitze der Liste hinzugefügt werden, und der Text für das Element.

    public static void BindListControl (ListControl ctl, SqlDataReader dr,
        String textColumn, String valueColumn, bool addBlankRow, string blankRowText)
    {
        ctl.Items.Clear();
        ctl.DataSource = dr;
        ctl.DataTextField = textColumn;
        ctl.DataValueField = valueColumn;
        ctl.DataBind();

        if (addBlankRow == true) ctl.Items.Insert(0, blankRowText);
    }

Dies ist zum Beispiel nützlich, wenn Sie jede Dropdownlist haben, als ihren Anfangswert eines leeren oder Text wie „Wählen Sie eine Stadt“ wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top