2008-09-17 7 views
8

Ich möchte nur eine ASP.NET DropDownList mit keinem ausgewählten Element. Das Setzen von SelectedIndex auf -1 ist bisher nicht erfolgreich. Ich verwende Framework 3.5 mit AJAX, d. H. Diese DropDownList befindet sich in einem UpdatePanel. Hier ist, was ich tue:"DropDownList.SelectedIndex = -1" Problem

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"); 
    } 

Der Moment, als ich ein Element in den DropDown hinzufügen, seine SelectedIndex Änderungen 0 und kann nicht mehr auf -1 gesetzt werden (Ich habe versucht SelectedIndex Aufruf nach Artikel als auch das Hinzufügen) ... Was mache ich falsch? Ant Hilfe wäre willkommen!

Antwort

17

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

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

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

Fügt das Drop-Down-Menü "Bitte wählen" oben hinzu.

Und wie erwähnt, wird immer genau ein Item in einem Drop-Down ausgewählt (ListBoxes sind anders, glaube ich), und dies ist standardmäßig der oberste, wenn keiner explizit ausgewählt ist.

2

Ich bin mir ziemlich sicher, dass Dropdown ein Element ausgewählt haben muss; Ich füge normalerweise ein leeres Listenelement hinzu

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

Als mein erstes Listenelement, und entsprechend verfahren.

2

Der selectedIndex kann nur -1 sein, wenn das Steuerelement zuerst initialisiert wird und keine Elemente in der Auflistung vorhanden sind.

Es ist nicht möglich, in einer Web-Dropdown-Liste kein Element auszuwählen, wie dies bei einem WinForm-Objekt der Fall wäre.

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

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

4

zu validieren ich folgendes lese: http://msdn.microsoft.com/en-us/library/a5kfekd2.aspx

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

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

die SelectedIndex Eigenschaft programmatisch festlegen oder den Index des ausgewählten Elements aus der Dropdownlist Steuerelement zu bestimmen. Ein Element wird immer im DropDownList-Steuerelement ausgewählt. Sie können die Auswahl nicht gleichzeitig von allen Elementen in der Liste löschen.

Vielleicht ist -1 nur zum Erhalten und nicht zum Setzen des Index gültig? Wenn ja, werde ich Ihren "Patch" verwenden.

5

Es ist möglich, selectedIndex Eigenschaft Dropdown auf -1 (i einzustellen. E.klare Auswahl) unter Verwendung von clientseitigen 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> 
+3

kleiner Kommentar: mit jQuery 1.6 oder neuer, $ (Elem) .attr ("selectedIndex") wird nicht mehr funktionieren, weil selectedIndex eine Eigenschaft ist, kein Attribut. Verwenden Sie stattdessen $ (emel) .prop ("selectedIndex", -1). – qualbeen

0

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

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