¿Hay alguna forma elegante de agregar una opción vacía a una DropDownList vinculada con un LinqDataSource?DropDownList con LinqDataSource y una opción vacía
6
A
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
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");
}
}
Cuestiones relacionadas
- 1. menú desplegable de ASP.NET MVC con una opción vacía predeterminada
- 2. ¿Cómo se compila una clase vacía y una estructura vacía?
- 3. Spinner con una selección predeterminada vacía
- 4. ¿Cómo agrego una primera entrada vacía hacer un <asp: DropDownList>?
- 5. onChange y onSelect en DropDownList
- 6. jQuery.Validate Validación Condicional RadioButton y DropDownList
- 7. Variable de script de shell no está vacía (opción -z)
- 8. ¿Puedo eliminar una captura vacía con lanzamiento?
- 9. Tratando con una lista vacía en mustache.js
- 10. por defecto una columna con cadena vacía
- 11. Expresión Lambda con una entrada vacía
- 12. Ajax.BeginForm UpdateTargetId no funciona con DropDownList
- 13. Comprobando si una lista está vacía con LINQ
- 14. JSON y matriz vacía
- 15. DropdownList de ASP.net sin elemento seleccionado
- 16. llenando una DropDownlist en ASP.NET MVC
- 17. ASP.NET MVC modelo de vista y DropDownList
- 18. LinqDataSource - ¿Se puede limitar la cantidad de registros devueltos?
- 19. Enlazando un DropDownList en ListView InsertItemTemplate lanzando un error
- 20. crear una rama vacía
- 21. Poblar ASP.NET MVC DropDownList
- 22. una matriz vacía
- 23. DropDownList en UpdatePanel
- 24. enumeración valor a DROPDOWNLIST
- 25. Pedido dropDownList utilizando relaciones?
- 26. ASP.NET Editor DropdownList
- 27. django nulo y cadena vacía
- 28. Opción TaskCreationOptions.LongRunning y ThreadPool
- 29. ASP.NET Auto Complete DropDownList
- 30. Yii DROPDOWNLIST valor predeterminado
¿Por qué no añades que la sugerencia de su código de ejemplo para mayor claridad? – Keltex
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
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