2010-08-10 5 views
4

J'ai une DropDownList sur une page ASP.NET qui est remplie par une base de données SQL.ASP.NET Dropdown Couleur de l'élément de menu

<asp:DropDownList ID="ddlName" runat="server"></asp:DropDownList> 

La population est dans le fichier code-behind:

ddlName.DataSource = SqlDataSource1; 
ddlName.DataValueField = (this.ddlName.SelectedValue); 
ddlName.DataTextField = "ccName"; 
ddlName.DataBind(); 

Je me demandais s'il était possible de changer l'arrière-plan ou la couleur du texte d'un élément dans la liste en fonction de sa valeur?


Je viens de remarquer que l'exemple ci-dessous fonctionne lorsque la page charges, mais la couleur lors de la publication du texte disparaît même si c'est où le code est. Y a-t-il quelque chose qui me manque?

protected override void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 

      ddlName.DataSource = SqlDataSource5; 
      ddlName.DataValueField = (this.ddlName.SelectedValue); 
      ddlName.DataTextField = "ccName"; 
      ddlName.DataBind(); 


      foreach (ListItem item in ddlName.Items) 
      { 
       if (item.Value == "Item 1") 
       { 
        item.Attributes.Add("style", "color:red"); 
       } 

       if (item.Value == "Item 2") 
       { 
        item.Attributes.Add("style", "color:red"); 
       } 
      } 

     } 

    } 

Répondre

5

Vous pouvez certainement ajouter ceci à votre événement de chargement de page.

foreach(ListItem item in ddlName.Items) { 
    if(item.Value == "someStringValue") { 
     item.Attributes.Add("style", "color:red") 
    } 
} 

Si cela ne fonctionne pas, vous pouvez déplacer ce code à l'événement DataBound de la liste déroulante.

+1

Cela a fonctionné parfaitement. Merci! – Brett