2009-11-19 8 views
2

gars Hai,id changement d'un contrôle serveur dans asp.net

je contrôle pour trouver un élément de liste d'une liste d'unoreder à l'intérieur d'une page principale de contenu de la page en utilisant ce,

Control home = this.Page.Master.FindControl("list").FindControl("home"); 

Maintenant, je dois changer l'id de la maison de contrôle à "courant" parce que pour appliquer css pour cela ....

+0

Vous semblez avoir plusieurs questions en cours d'exécution avec le même problème: http://stackoverflow.com/questions/1763211/apply-css-for-a-html-generic-control-like-ul-and-li-in -asp-net –

Répondre

1

Connaissez-vous le type de commande que vous trouvez? Ni Control ni ListItem exposent une propriété CssClass, cependant, ListItem expose sa propriété Attributes.

mise à jour basée sur le commentaire et other question:

Vous devez utiliser System.Web.UI.HtmlControls.HtmlGenericControl

donc quelque chose comme cela devrait fonctionner pour vous:

HtmlGenericControl home = 
        this.Page.Master.FindControl("list").FindControl("home") 
                 as HtmlGenericControl; 

string cssToApply = "active_navigation"; 

if (null != home) { 
    home.Attributes.Add("class", cssToApply); 
} 

Si vous pensez qu'il ya peut-être déjà un classe attribuée à ce que vous devez ajouter à vous pourrait faire quelque chose comme:

if (null != home) { 
    if (home.Attributes.ContainsKey("class")) { 
    if (!home.Attributes["class"].Contains(cssToApply)){ 
     // If there's already a class attribute, and it doesn't already 
     // contain the class we want to add: 
     home.Attributes["class"] += " " + cssToApply; 
    } 
    } 
    else { 
    // Just add the new class 
    home.Attributes.Add("class", cssToApply); 
    } 
} 

S'il ne s'agit pas d'éléments ListItems, placez-les dans le bon type et modifiez la collection d'attributs comme auparavant, sauf s'il existe une propriété CssClass pour ce type.

+0

hai zaph, J'ai une erreur Impossible de convertir le type 'System.Web.UI.Control' en 'Système. Web.UI.WebControls.ListItem 'via une conversion de référence, une conversion boxing, une conversion unboxing, une conversion wrapping ou une conversion de type null –

+0

En fonction de votre autre question: http://stackoverflow.com/questions/1763211/apply-css-for -a-html-generic-control-comme-ul-et-li-dans-asp-net - Je mettrai à jour ma réponse. –

1

Oui, pour utiliser css id dans asp.net est un gros problème. tout d'abord, vous pouvez changer l'identifiant de votre contrôle serveur en fonction de ce que vous voulez, mais cela sera régénéré par ASP.NET en fonction de la position du contrôle dans l'arbre de contrôle de votre page.

Ma recommandation est d'utiliser la propriété cssclass des contrôles et de remplacer les identifiants css par des classes.

+0

Hai canavar je n'ai pas eu vous ..... –

+0

peut donner un exemple ... –