Frage

Ich will nur ein ASP.NET Dropdownlist ohne ausgewähltes Element. Einstellen SelectedIndex auf -1 ist ohne Erfolg, so weit. Ich verwende Framework 3.5 mit AJAX, das heißt das Dropdownlist in einem Update ist. Hier ist, was ich tue:

    protected void Page_Load (object sender, EventArgs e)
    {
        this.myDropDownList.SelectedIndex = -1;
        this.myDropDownList.ClearSelection();

        this.myDropDownList.Items.Add("Item1");
        this.myDropDownList.Items.Add("Item2");
    }

In dem Moment, ich hinzufügen, ein Element in der Dropdown-Liste seine SelectedIndex Änderungen 0 und nicht mehr auf -1 gesetzt werden kann (Ich habe versucht Aufruf SelectedIndex nach Artikel als auch das Hinzufügen) ... Was mache ich falsch? Ant Hilfe geschätzt!

War es hilfreich?

Lösung

Bare daran myDropDownList.Items.Add wird ein neues ListItem Element am unteren Rand hinzufügen, wenn Sie es nennen, nachdem eine Datasource Ausführen / DataBind nennen so verwenden myDropDownList.Items.Insert Methode anstelle zB ...

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));

Wird hinzufügen 'Bitte wählen Sie' Drop-Down-Element nach oben.

Und wie erwähnt, gibt es immer genau ein Element in einem Drop-Down ausgewählt werden (Listboxen sind anders glaube ich), und wird standardmäßig an die Spitze ein, wenn keine explizit ausgewählt werden.

Andere Tipps

Es ist möglich, auf selectedIndex Eigenschaft von Dropdownlist -1 (i e klare Auswahl..) Mit clientseitige Skript:

<form id="form1" runat="server">
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Value="A"></asp:ListItem>
        <asp:ListItem Value="B"></asp:ListItem>
        <asp:ListItem Value="C"></asp:ListItem>
    </asp:DropDownList>
    <button id="СlearButton">Clear</button>
</form>

<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function()
    {
        $("#СlearButton").click(function()
        {
            $("#DropDownList1").attr("selectedIndex", -1); // pay attention to property casing
        })

        $("#ClearButton").click();
    })
</script>

Ich lese die folgenden Möglichkeiten: http://msdn.microsoft.com/en-us/library/a5kfekd2. aspx

Dort heißt es: Um den Indexwert des ausgewählten Elements zu erhalten, lesen Sie den Wert der SelectedIndex-Eigenschaft. Der Index basiert auf Null. Wenn nichts ausgewählt wurde, ist der Wert der Eigenschaft -1.

In der gleichen Zeit, unter http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex (VS.80) aspx wir sehen:

Verwenden Sie die SelectedIndex Eigenschaft programmatisch den Index des ausgewählten Elements aus der Dropdownlist Steuerelement angeben oder zu bestimmen. Ein Element wird immer in dem Dropdownlist-Steuerelement ausgewählt. Sie können die Auswahl in der Liste in der gleichen Zeit von jedem Punkt löschen.

Vielleicht -1 gilt nur für das Abrufen und nicht für den Index einstellen? Wenn ja, werde ich deine 'Patch' verwenden.

Ich bin mir ziemlich sicher, dass Drop-Down hat einige Artikel ausgewählt haben; Ich in der Regel eine leere Liste Element hinzufügen

this.myDropDownList.Items.Add ( "");

Als mein ersten Listenelement, und geht entsprechend vor.

Die selectedIndex kann nur -1, wenn die Steuerung zuerst initalised und es gibt keine Elemente innerhalb der Sammlung.

Es ist nicht möglich, kein Element in einem Web-Drop-Down ausgewählt hat Liste, wie Sie es auf einem Windows Forms.

Ich finde, es ist am besten zu haben: this.myDropDownList.Items.Add (neu ListItem ( "Bitte wählen Sie ...", ""));

So kann ich an den Benutzer vermitteln, die sie benötigen, um einen Punkt auszuwählen, und Sie können SelectedIndex == 0 überprüfen, um zu bestätigen

  1. Erstellen Sie Ihre Dropdown-Liste und geben Sie eine Anfangs ListItem
  2. Stellen Sie AppendDataBoundItems true so dass neue Objekte angehängt bekommen.
<asp:DropDownList ID="YourID" DataSourceID="DSID" AppendDataBoundItems="true"> 
<asp:ListItem Text="All" Value="%"></asp:ListItem> 
</asp:DropDownList>

Bitte versuchen Sie unter Syntax:

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("Select"))

oder

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("SelectText"))

oder

DropDownList1.Items.FindByText("Select").selected =true

Für weitere Informationen: http://vimalpatelsai.blogspot.in/2012/07/dropdownlistselectedindex-1 -problem.html

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