Pregunta

Sólo quiero una ASP.NET DropDownList con ningún elemento seleccionado.Configuración de SelectedIndex -1 no es en vano, hasta ahora.Yo estoy usando el Framework 3.5 con AJAX, es decir,este DropDownList es dentro de un UpdatePanel.Aquí es lo que estoy haciendo:

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

El momento que añadir un elemento en la lista Desplegable, su SelectedIndex cambia a 0 y no puede ser más ajustado a -1 (he intentado llamar SelectedIndex después de la adición de elementos así)...¿Qué estoy haciendo mal?Ant ayuda se agradece!

¿Fue útil?

Solución

Desnudo en cuenta que myDropDownList.Elementos.Agregar agregar un nuevo Listitem elemento en la parte inferior si usted llama después de realizar un origen de datos/DataBind llamada para uso myDropDownList.Elementos.El método Insert en lugar de por ejemplo...

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

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

Añadir el 'por Favor, seleccione" lista desplegable elemento a la parte superior.

Y como se ha mencionado siempre habrá exactamente un Elemento seleccionado en un menú desplegable (Listbox, son diferentes, creo), y el valor por defecto es el de arriba si no hay ninguno seleccionado explícitamente.

Otros consejos

Es posible establecer selectedIndex propiedad de DropDownList a -1 (i.e.claro selección) el uso de secuencias de comandos de cliente:

<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>

Estoy leyendo el siguiente:http://msdn.microsoft.com/en-us/library/a5kfekd2.aspx

Dice:Para obtener el valor de índice del elemento seleccionado, leer el valor de la propiedad SelectedIndex.El índice de base cero.Si nada ha sido seleccionado, el valor de la propiedad es de -1.

En el mismo tiempo, en http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex(VS.80).aspx podemos ver:

El uso de la propiedad SelectedIndex mediante programación especificar o determinar el índice del elemento seleccionado en el control DropDownList.Un elemento siempre está seleccionado en el control DropDownList.Usted no puede borrar la selección de cada elemento de la lista al mismo tiempo.

Quizás -1 es válida sólo para recibir y no para establecer el índice?Si es así, voy a utilizar su 'parche'.

Estoy bastante seguro de que esa lista tiene que tener algún elemento seleccionado;Yo suelo añadir un elemento de la lista vacía

este.myDropDownList.Elementos.Add("");

Como mi primer elemento de la lista, y proceder en consecuencia.

El selectedIndex sólo puede ser -1 cuando el control es el primero initalised y no hay elementos dentro de la colección.

No es posible tener ningún elemento seleccionado en una web de la lista desplegable como se haría en un WinForm.

Me parece que lo mejor que tiene:este.myDropDownList.Elementos.Add(new ListItem("por Favor, seleccione...", ""));

De esta manera puedo transmitir al usuario que se necesita para seleccionar un elemento, y se puede comprobar SelectedIndex == 0 para validar

  1. Crear tu lista Desplegable y especifique una inicial ListItem
  2. Conjunto AppendDataBoundItems a true de modo que los nuevos elementos de obtener anexa.
<asp:DropDownList ID="YourID" DataSourceID="DSID" AppendDataBoundItems="true"> 
<asp:ListItem Text="All" Value="%"></asp:ListItem> 
</asp:DropDownList>

Por favor, intente la sintaxis siguiente:

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

o

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

o

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

Para más info :http://vimalpatelsai.blogspot.in/2012/07/dropdownlistselectedindex-1-problem.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top