asp.net vb.net drop-down-menu

asp.net - Lista desplegable de datos-valor inicial



vb.net drop-down-menu (8)

¿Cómo configuro el valor inicial de una lista desplegable de datos en ASP.NET?

Por ejemplo, quiero los valores, pero el primer valor para mostrar debe ser - Seleccione Uno ---, con un valor nulo.


Agregue un elemento y establezca su propiedad "Seleccionado" en verdadero, probablemente también quiera establecer la propiedad "appenddatabounditems" en true para que su valor inicial no se elimine cuando se enlaza con datos.

Si está hablando de establecer un valor inicial que está en sus elementos de datos enlazados, luego enganche en su evento ondatabound y establezca qué índice desea seleccionar = verdadero, querrá ajustarlo en "if not page.isPostBack then ...." aunque

Protected Sub DepartmentDropDownList_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DepartmentDropDownList.DataBound If Not Page.IsPostBack Then DepartmentDropDownList.SelectedValue = "somevalue" End If End Sub


Creo que lo que quieres hacer es esto:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"> <asp:ListItem Text="--Select One--" Value="" /> </asp:DropDownList>

Asegúrese de que ''AppendDataBoundItems'' esté establecido en verdadero o de lo contrario, borrará el elemento de la lista ''--Seleccione uno--'' cuando enlace sus datos.

Si tiene la propiedad ''AutoPostBack'' de la lista desplegable establecida en true, también tendrá que establecer la propiedad ''CausesValidation'' en true y luego usar ''RequiredFieldValidator'' para asegurarse de que la opción ''--Select One--'' doesn '' t causa una devolución de datos.

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator>


Hola amigo, en este caso puedes usar el

AppendDataBound="true"

y después de esto usa el elemento de la lista. por ejemplo:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"> <asp:ListItem Text="--Select One--" Value="" /> </asp:DropDownList>

pero el problema radica en que después de la segunda vez, los datos seleccionados se agregan a datos antiguos.


Lo que hago es establecer la propiedad del texto de la lista desplegable DESPUÉS de que lo enlace. Algo como esto:

protected void LoadPersonComboBox() { var p = new PeopleBLL(); rcmbboxEditPerson.DataSource = p.GetPeople(); rcmbboxEditPerson.DataBind(); rcmbboxEditPerson.Text = "Please select an existing person to edit..."; }

Esto hace que aparezca el valor visible inicial de este menú desplegable, pero que en realidad no forme parte del menú desplegable, ni es seleccionable.


Para seleccionar un valor del menú desplegable, use el índice como este:

si tenemos el

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList>

usarías:

DropDownList1.Items[DropDownList1.SelectedIndex].Value

esto devolvería el valor para el índice seleccionado.


Sé que esto es antiguo, pero una combinación de estas ideas conduce a una solución muy elegante:

Mantenga todas las configuraciones de propiedades predeterminadas para DropDownList (AppendDataBoundItems = false, Artículos vacíos). A continuación, gestione el evento DataBound de la siguiente manera:

protected void dropdown_DataBound(object sender, EventArgs e) { DropDownList list = sender as DropDownList; if (list != null) list.Items.Insert(0, "--Select One--"); }

La guinda del pastel es que este manejador único se puede compartir con cualquier cantidad de objetos DropDownList, o incluso poner en una biblioteca de utilidad de uso general para todos sus proyectos.


Sé que esto ya tiene una respuesta elegida, pero quería dar mi granito de arena. Tengo una lista desplegable de datos:

<asp:DropDownList id="country" runat="server" CssClass="selectOne" DataSourceID="country_code" DataTextField="Name" DataValueField="CountryCode_PK" ></asp:DropDownList> <asp:SqlDataSource id="country_code" runat="server" ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" SelectCommand="SELECT CountryCode_PK, CountryCode_PK + '' - '' + Name AS N''Name'' FROM TBL_Country ORDER BY CountryCode_PK" ></asp:SqlDataSource>

En el código subyacente, tengo esto - (que selecciona Estados Unidos por defecto):

if (this.IsPostBack) { //handle posted data } else { country.SelectedValue = "US"; }

La página inicialmente se carga en función del valor "US" en lugar de tratar de preocuparse por un Índice seleccionado (¿qué ocurre si se agrega otro elemento a la tabla de datos? No quiero tener que volver a codificar)


dropdownlist.Items.Insert(0, new Listitem("--Select One--", "0");