web-dev-qa-db-fra.com

Comment ajouter une option "Sélectionner" par défaut à ce contrôle ASP.NET DropDownList?

Je suis un nouveau développeur ASP.NET et j'essaie d'apprendre Linq-To-Entities. J'essaie de lier une DropDownList avec l'instruction Linq pour récupérer la liste des statuts dans l'entité d'état. Tout fonctionne bien. Cependant, j'essaie maintenant d'ajouter l'option "Sélectionner" à la DropDownList mais cela ne fonctionne pas avec moi. Pourriez-vous s'il vous plaît me dire comment résoudre ce problème?

Code ASP.NET:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
                OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">

Code-Behind:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DropDownList1.Items.Add(new ListItem("Select", "0", true));
            bindStatusDropDownList();
        }
    }

private void bindStatusDropDownList()
    {
        Status status = new Status();
        DropDownList1.DataSource = status.getData();
        DropDownList1.DataValueField = "ID";
        DropDownList1.DataTextField = "Description";
        DropDownList1.DataBind();
    }

METTRE À JOUR:

J'ai également essayé de faire dans le jeu de balisage de la DropDownList mais cela n'a pas fonctionné trop avec moi

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
                OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                    <asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
            </asp:DropDownList>
7
user3107976

Cela ne fonctionne pas parce que vous ajoutez un élément à la liste, puis que vous remplacez toute la liste par une nouvelle variable DataSource qui effacera et remplira à nouveau votre liste, perdant ainsi le premier élément ajouté manuellement.

Donc, vous devez faire ceci à l’inverse comme ceci:

Status status = new Status();
DropDownList1.DataSource = status.getData();
DropDownList1.DataValueField = "ID";
DropDownList1.DataTextField = "Description";
DropDownList1.DataBind();

// Then add your first item
DropDownList1.Items.Insert(0, "Select");
20
Belogix

Bien que la question soit assez ancienne, une autre approche consiste à modifier la propriété AppendDataBoundItems . Donc le code sera:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
                  OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
                  AppendDataBoundItems="True">
     <asp:ListItem Selected="True" Value="0" Text="Select"></asp:ListItem>
</asp:DropDownList>
8
Konstantin Vasilev

J'ai essayé avec le code suivant. ça marche bien pour moi

ManageOrder Order = new ManageOrder();
Organization.DataSource = Order.getAllOrganization(Session["userID"].ToString());
Organization.DataValueField = "OrganisationID";
Organization.DataTextField = "OrganisationName";                
Organization.DataBind();                
Organization.Items.Insert(0, new ListItem("Select Organisation", "0"));
1
Sapnandu
Private Sub YourWebPage_PreRenderComplete(sender As Object, e As EventArgs) Handles Me.PreRenderComplete

     If Not IsPostBack Then
     DropDownList1.Items.Insert(0, "Select")
     End If

End Sub
0
Aladein

Déplacer DropDownList1.Items.Add (new ListItem ("Select", "0", true));

alors:

    if (!IsPostBack)
    {
        bindStatusDropDownList(); //first create structure
        DropDownList1.Items.Add(new ListItem("Select", "0", true)); // after add item
    }
0

Si vous faites un "Ajouter", il l'ajoutera au bas de la liste. Vous devez faire un "Insérer" si vous voulez que l'élément soit ajouté en haut de la liste.

0
Laurie