28 votes

Lié aux données dans la liste déroulante - valeur initiale

Comment puis-je définir la valeur initiale de l'un lié aux données dans la liste déroulante dans ASP.NET?

Par exemple, je veux les valeurs, mais la première valeur d'affichage devrait être, Sélectionnez Un ---, avec une valeur null.

64voto

Phaedrus Points 6450

Je pense que ce que vous voulez faire est ceci:

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

Assurez-vous que le 'AppendDataBoundItems" est défini à true , sinon tu va effacer le '--Sélectionnez Un--' élément de la liste lorsque vous liez vos données.

Si vous avez la "AutoPostBack biens de la liste déroulante définie sur true , vous devrez aussi définir la CausesValidation propriété à true alors l'utilisation d'un RequiredFieldValidator" pour que les '--Sélectionnez Un--' option permet de ne pas provoquer une publication.

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

11voto

Matt L Points 91

Je sais que c'est vieux, mais une combinaison de ces idées mène à une solution élégante:

Conserver tous les paramètres de propriété par défaut pour la DropDownList (AppendDataBoundItems=false, les Éléments vides). Puis de gérer l'événement DataBound comme ceci:

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

La cerise sur le gâteau, c'est que ce gestionnaire peut être partagée par un certain nombre de DropDownList objets, ou même mis dans un but d'utilité de la bibliothèque pour tous vos projets.

2voto

GregD Points 4434

Ce que je fais est de définir la propriété text de la liste déroulante APRÈS je databind il. Quelque chose comme ceci:

   protected void LoadPersonComboBox()
    {
        var p = new PeopleBLL();

        rcmbboxEditPerson.DataSource = p.GetPeople();
        rcmbboxEditPerson.DataBind();
        rcmbboxEditPerson.Text = "Please select an existing person to edit...";
    }

De ce fait la première visibles valeur de cette liste déroulante afficher, mais pas réellement de faire partie de la liste déroulante, il n'est ni un choix.

2voto

JayTee Points 1584

Je sais que cela a déjà choisi de réponse mais je voulais jeter dans mes deux cents. J'ai un databound liste déroulante:

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

Dans le code-behind, j'ai ce - (qui sélectionne les États-unis par défaut):

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

La page de chargement initialement basé sur le "NOUS" de la valeur plutôt que d'essayer de s'inquiéter d'un selectedIndex (et si un autre élément est ajouté dans le tableau de données - je ne veux pas avoir à re-coder)

1voto

Alex Peta Points 888

Pour sélectionner une valeur dans la liste déroulante utiliser l'index comme ceci:

si nous avons l'

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

vous pouvez utiliser :

DropDownList1.Items[DropDownList1.SelectedIndex].Value

ce serait retourner la valeur de l'index sélectionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X