Tengo un menú desplegable, tengo un origen de datos, tengo AutoPostBack
establecido en true
.
Quiero agregar una primera entrada a la fuente de datos que diga algo como "--- seleccionar país ---" y al seleccionar esta entrada no se generará una devolución de datos.
Parece que debería ser fácil de hacer, pero parece que no puedo encontrar una buena solución.
Gracias.¿Cómo agrego una primera entrada vacía hacer un <asp: DropDownList>?
Respuesta
En su página aspx (la parte importante es el manejo del evento DataBound y el establecimiento de CausesValidation = "true" para forzar la validación de una lista desplegable):
<asp:DropDownList ID="ddlCountries" runat="server" DataSourceID="dsCountries" AutoPostBack="true" OnDataBound="ddlCountries_DataBound" CausesValidation="true" />
<asp:RequiredFieldValidator ID="rfvCountries" runat="server" ControlToValidate="ddlCountries" Display="Dynamic" ErrorMessage="Please select a country." />
En su código subyacente (es importante que la valor del elemento introducido es String.Empty para el validador de campo requerido para trabajar):
protected void ddlCountries_DataBound(Object sender, EventArgs e)
{
ddlCountries.Items.Insert(0, new ListItem("--- select country ---", String.Empty));
}
Nota: Si no desea que el mensaje del validador para visualizar, establezca la propiedad "Display" a " Ninguna".
+1 Esto no soluciona el deseo de no tener una devolución de datos solo para la pero no estoy seguro de que cualquier solución fuera del extenso cableado de Javascript del control lo haga. Creo que esta es la mejor solución simple. –
Actualicé mi respuesta para incluir un validador que debería ocuparse de no publicar para un artículo. –
+1 (Si RequiredFieldValidator no funciona, solo use un CompareValidator) – user39603
También puede agregar la fila manualmente a través del diseñador, pero debe asegurarse de que la propiedad de DropDownList AppendDataBoundItems = True también para que las filas con datos se nutran en la primera fila.
Tienes que tener cuidado con este. Asegúrese de que su conexión de datos no se carga cada vez que se cargue la página, de lo contrario su lista desplegable se agregará cada vez que se cargue la página. – Nasir
Buen punto, recuerdo haber tenido que lidiar con eso desde el principio cuando comencé a trabajar con DDL. – TheTXI
Las respuestas anteriores se refieren a la inserción del valor, pero entiendo que su problema es la propiedad AutoPostBack. Supongo que no quieres devolver ese valor y ese es tu problema, ¿verdad?
Quizás haya una solución mejor, pero sugeriría que no se use AutoPostBack. Puede manejar la devolución de datos automáticamente utilizando el evento de cambio de valor seleccionado.
en mi humilde opinión, si el AutoPostBack no funciona como se desea, es siempre mejor para implementar su propia solución que poner algún tipo de "parche" sobre ella para "fijar" la misma.
Espero que ayude
gracias. Pero siento que esto debería funcionar de inmediato. Con AutoPostBack activado, no hay forma de seleccionar la primera entrada. Entonces debes insertar uno que no haga nada. – vitule
Utilice el método de inserción como otros han sugerido para añadir el elemento en la posición 0 con un valor para indicar no seleccionado (por ejemplo, 'desconocido'). Luego use validadores, agregue un validador de campo requerido y establezca la propiedad InitialValue en el valor del nuevo elemento de la lista ('desconocido' en nuestro ejemplo).
Establezca el índice 0 para que sea el elemento seleccionado en la carga de la página y si no es una devolución.
Si el usuario no selecciona otra opción, el validador evitará la devolución de datos.
Espero que es lo que estás buscando.
- 1. Detectando entrada nula/vacía del usuario
- 2. Expresión Lambda con una entrada vacía
- 3. ¿Cómo puedo hacer que un DateTimePicker muestre una cadena vacía?
- 4. Diseñando la primera opción de una entrada <select> en iOS
- 5. ¿Cómo hacer una prueba para una colección generic.dictionary vacía?
- 6. <asp: FileUpload con UpdatePanel
- 7. sqlplus spooling: ¿Cómo deshacerse de la primera línea vacía?
- 8. ¿Cómo agrego un wstring?
- 9. Cómo agrego un segue a un UIGestureRecognizer
- 10. ¿Cómo hacer una consulta SQL parametrizada en ASP clásica?
- 11. ¿Cómo puedo hacer una función anónima "vacía" en MATLAB?
- 12. cómo agrego un int a una cadena
- 13. JComboBox: quiere que la primera entrada sea en blanco entrada
- 14. ¿Cómo puedo hacer una nueva referencia hash vacía en Perl?
- 15. asp: QueryStringParameter y el parámetro de cadena de consulta vacía
- 16. Cómo hacer una primera letra capital en C#
- 17. ¿Cómo hacer la primera letra en mayúscula en un UILabel?
- 18. Cómo aplicar javascript en <asp: Buttonfield>?
- 19. Filehelpers ExcelStorage.ExtractRecords falla cuando la primera celda está vacía
- 20. ¿Cómo agrego un lapso en un link_to con una imagen
- 21. Obtención del puntero para la primera entrada en una matriz
- 22. Primera línea vacía en razor mvc 4 rc
- 23. ¿Cómo agrego una entrada de texto a una aplicación Samsung Smart TV?
- 24. ¿Cómo se compila una clase vacía y una estructura vacía?
- 25. Como hacer un acto enlace como una entrada de archivo
- 26. ¿Cómo agrego un botón "buscar" en un campo de entrada de texto?
- 27. Eliminar la primera línea de archivo si está vacía
- 28. Cómo hacer un simulacro lanza una excepción la primera vez y devuelve un valor el segundo
- 29. Hacer una entrada de no-hacer clic en enviar
- 30. node.js: ¿Cómo detectar una secuencia stdin vacía?
¿Puede comentar cómo está compilando el resto de la lista (enlace de datos frente a ddl.Items.Add()) –
¿Realmente desea que no se realice una devolución de datos si el usuario selecciona la entrada "seleccionar por favor"? ¿Qué pasa si el usuario selecciona alguna otra entrada, luego vuelve a "seleccionar por favor". ¿No quieres reconocer eso? Por supuesto, no sé nada sobre tu aplicación, pero lo que dices aquí, así que tal vez tiene mucho sentido en contexto. (Y me doy cuenta de que estoy haciendo esta pregunta más de 5 años después de la publicación original. ¡Espero que ya lo hayas descifrado!) – Jay