2008-11-10 16 views

Respuesta

9

Aquí se explica cómo agregar un valor en la parte superior de la lista. Puede ser una cadena vacía o algún texto.

<asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False"> 
    <asp:ListItem Value="-1"> 
     -- Choose a Category -- 
    </asp:ListItem>   
</asp:DropDownList> 

Asegúrese de establecer DropDownList's AppendDataBoundItems = True.

+0

¿Por qué no añades que la sugerencia de su código de ejemplo para mayor claridad? – Keltex

+0

Gracias por la sugerencia, Keltex. Pensé que mi versión original enfatizaba el hecho de que el atributo debía ser cambiado, pero obviamente no fue así. – DOK

+0

Como resultado, solo establecer AppendDataBoundItems en verdadero agrega una opción vacía al principio. Como si estuviera allí por defecto o qué. Si agrego un asp: ListItem, obtendré 2 opciones vacías. De todos modos, tu solución es genial, gracias. – jansokoly

0

me gustaría proporcionar un método de extensión en IEnumerable<string> que antepone un elemento al principio de la lista:

public static IEnumerable<string> Prepend(this IEnumerable<string> data, string item) 
    { 
     return new string[] { item == null ? string.Empty : item }.Union(data); 
    } 

Su tipo de LINQ-Y, ya que utiliza la Unión método de extensión de LINQ. Es un poco más limpio que hacer esto:

var result = new string[]{string.Empty}.Union(from x in data select x.ToString()); 
1

de marcado:

<asp:DropDownList ID="ddlQualQuestion" runat="server" DataSourceID="sdsQualQuestion" DataTextField="ShortQuestionText" DataValueField="QualificationQuestionKey" AutoPostBack="true" OnSelectedIndexChanged="ddlQualQuestion_SelectedIndexChanged" OnDataBound="ddlQualQuestion_DataBound" />; 

Código atrás:

protected void ddlQualQuestion_DataBound(object sender, EventArgs e) 
{ 
    ddlQualQuestion.Items.Insert(0, new ListItem("", "0")); 
} 
1

Tomando la solución DOK proporciona:

<asp:DropDownList ID="categories" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="categoriesDataSource" DataTextField="CategoryName" DataValueField="CategoryID" EnableViewState="False"> 
    <asp:ListItem Value="-1"> 
     -- Choose a Category -- 
    </asp:ListItem>   
</asp:DropDownList> 

Addtionally, si no quieres forzar al usuario hacer una selección que puede añadir un método para la LinqDataSource de su GridView:

OnSelecting="myGridview_Selecting" 

Agregar código detrás de la siguiente manera:

protected void myGridview_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    if (categories.SelectedValue == "-1") 
    { 
     e.WhereParameters.Remove("CategoryID"); 
    } 
}