Ajouter une valeur par défaut dans dropdownlist après la liaison avec la base de données

j'ai lié mon ddl à ma base de données comme ci-dessous, mais comment puis-je ajouter un texte par défaut en plus des valeurs liées pour qu'il apparaisse comme:

Select Color ---> default text
Red ---> database value
Blue ---> database value
Green ---> database value   

Code:

    DropDownList ddlSize = (DropDownList)FormView_Product.Row.Cells[0].FindControl("ddlSize");
    CommerceEntities db = new CommerceEntities();

    ddlColor.DataSource = from p in db.ProductTypes
                                      where p.ProductID == pID
                                      orderby p.Color 
                                      select new { p.Color };
    ddlColor.DataTextField = "Color";

Merci!

22
demandé sur k80sg 2011-07-08 17:46:51

5 réponses

Après de liaison de données, faire ceci:

ddlColor.Items.Insert(0, new ListItem("Select","NA")); //updated code

ou suivez la deuxième suggestion de Brian si vous voulez le faire dans le markup.

vous devriez probablement ajouter un contrôle Requerdfieldvalidator et définir sa valeur initiale à "NA".

<asp:RequiredFieldValidator .. ControlToValidate="ddlColor" InitialValue="NA" />
41
répondu Keith 2015-05-18 20:43:20

Vous pouvez le faire par programmation:

ddlColor.DataSource = from p in db.ProductTypes
                                  where p.ProductID == pID
                                  orderby p.Color 
                                  select new { p.Color };
ddlColor.DataTextField = "Color";
ddlColor.DataBind();
ddlColor.Items.Insert(0, new ListItem("Select", "NA"));

Ou de l'ajouter dans une balise:

<asp:DropDownList .. AppendDataBoundItems="true">
   <Items>
       <asp:ListItem Text="Select" Value="" />
   </Items>
</asp:DropDownList>
13
répondu Brian Mains 2014-07-28 09:19:46

Vous pouvez l'ajouter par programmation ou dans le balisage, mais si vous l'ajouter par programmation, plutôt que Add l'élément, vous devez Insert comme la position zéro de sorte qu'il est le premier élément:

ddlColor.DataSource = from p in db.ProductTypes
                      where p.ProductID == pID
                      orderby p.Color
                      select new { p.Color };
ddlColor.DataTextField = "Color";
ddlColor.DataBind();
ddlColor.Items.Insert(0, new ListItem("Select Color", "");

L'élément par défaut devrait être le premier élément de la liste. Si vous venez d' Add, il sera sur le fond et ne sera pas sélectionné par défaut.

4
répondu Devin Burke 2011-07-08 13:53:58

design

<asp:DropDownList ID="ddlArea" DataSourceID="ldsArea" runat="server" ondatabound="ddlArea_DataBound" />

code

protected void ddlArea_DataBound(object sender, EventArgs e)
{
    ddlArea.Items.Insert(0, new ListItem("--Select--", "0"));
}
2
répondu ch2o 2013-04-18 20:36:05

La solution fournie par Justin devrait fonctionner. Pour être sûr de faire usage de SelectedIndex la propriété aidera aussi.

ddlColor.DataSource = from p in db.ProductTypes
                      where p.ProductID == pID
                      orderby p.Color
                      select new { p.Color };

ddlColor.DataTextField = "Color";
ddlColor.DataBind();

ddlColor.Items.Insert(0, new ListItem("Select Color", ""); 
ddlColor.SelectedIndex = 0;
0
répondu saidevakumar 2012-11-22 08:24:25