2009-09-21 7 views
2

J'utilise des données dynamiques ASP.NET. Dans la page Insert.aspx, j'ai quelques listes déroulantes à sélectionner. Les champs représentés par Dropdown sont des champs obligatoires dans la base de données. La liste déroulante n'affiche donc pas 'Sélectionner' comme option par défaut dans la liste déroulante. Je veux ajouter l'option 'Sélectionner' en haut des autres enregistrements de la base de données affichée dans la liste déroulante. Notez que ce champ n'est pas obligatoire, donc l'option 'Select' n'est pas affichée par défaut par les données dynamiques. Comment puis-je accomplir cela?Ajouter un élément "Select" dans DropDown

Répondre

8

Ajouter votre « sélectionner » élément après la liaison à votre DropDownLists en utilisant Insérer méthode:

myDropDownList.DataBind(); 
// To make it the first element at the list, use 0 index : 
myDropDownList.Items.Insert(0, new ListItem("Select", string.Empty)); 
+0

Merci! Ça a marché... –

1

Je voudrais créer un FieldTemplate personnalisé pour les champs obligatoires de menu déroulant. Insérer l'élément "Select" pendant l'événement OnDataBinding du contrôle. Je voudrais également avoir un côté client RequiredFieldValidator pour s'assurer que quelque chose d'autre que "Select" est choisi avant qu'il puisse poster.

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ForeignKeyRequired_Edit.ascx.cs" 
Inherits="DDWANorthwind.DynamicData.FieldTemplates.ForeignKeyRequired_Edit" %> 
<asp:DropDownList ID="DropDownList1" runat="server" CssClass="droplist"> 
</asp:DropDownList> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
ControlToValidate="DropDownList1" ErrorMessage="Selection Required"></asp:RequiredFieldValidator> 

-

protected override void OnDataBinding(EventArgs e) 
    { 
    base.OnDataBinding(e); 

    if (Mode == DataBoundControlMode.Edit) 
    { 
    string foreignkey = ForeignKeyColumn.GetForeignKeyString(Row); 
    ListItem item = DropDownList1.Items.FindByValue(foreignkey); 
    if (item != null) 
    { 
    DropDownList1.SelectedValue = foreignkey; 
    } 
    } 
    else if (Mode == DataBoundControlMode.Insert && 
    Column.IsRequired) 
    { 
    DropDownList1.Items.Insert(0, new ListItem("Select", "")); 
    } 
    } 

-

vous devez utiliser l'attribut UIHint pour que cette FieldTemplate serait utilisé sur la valeur par défaut.

1

Ajout d'un élément supérieur à l'index 0 fonctionne très bien, mais LINQ offre une autre possibilité, pour retourner le "sélectionner" ou "choisir quelque chose" ou "tout" dans le cadre des données. Une liste déroulante a été DataBound à cette fonction:

public static List<string> GetRegions() 
{ 
    using (NorthwindDataContext nw = new NorthwindDataContext()) 
    { 
     IQueryable<string> regionQuery = nw.Customers 
      .Where(c => c.Region != null) 
      .OrderBy(c => c.Region) 
      .Select(c => c.Region) 
      .Distinct(); 
     return (new List<string>() { "All" }).Concat(regionQuery).ToList(); 
    } 
} 
0
//---Populate Category DropDownList 
    private void getData() 
    { 

     var category = (from c in CoffeeContext.tblProductTypes 
         select new { c.ProductType, c.Description }).ToList(); 
     cbxCategory.DataTextField = "Description"; 
     cbxCategory.DataValueField = "ProductType"; 
     cbxCategory.DataSource = category; 
     cbxCategory.DataBind(); 
     cbxCategory.Items.Insert(0, "--Select Type--"); 
     cbxCategory.SelectedIndex = 0; 
    } 
0

Sélectionnez Top 1 '0' ValueField, '--Sélectionnez--' comme textField de dummtable UNION ID select, le texte de yourtable

Le contrôle à partir du backend donne beaucoup plus de flexibilité

Questions connexes