Comment définir la classe sur les div qui est à l'intérieur de la répétition dans le code derrière?
id0 est la classe pour la div qui a fond comme une image sprite et à l'intérieur de ce div..il y a une liste de liens (en répétition)..lorsque l'utilisateur survole les liens..l'image de fond de la div s'affiche diff parties de l'image sprite en conséquence
Maintenant, je veux que les classes id1 à id5 être défini comme les classes de la répétition de la liste...maintenant, comment dois-je aller buter?
comme la liste de liens à l'intérieur de répétition est à venir à partir de la DB..comment puis-je créer des balises div à l'intérieur de ce répéteur
et comment puis-je définir la classe pour chacun des 5 divs qui sera créée et définir ces classes ?
comme auparavant, j'avais de balisage simple mais maintenant, je dois générer la liste des liens à l'aide d'un répéteur..donc comment dois-je appliquer le CSS maintenant ??
Veuillez donner quelques idées..thnx
[MODIFIER]
ok essayé..
ajouté la balise div dans répéteur après l'étiquette et dans le code behind :-
rpt1:.FindControl("myDiv").Les contrôles.Ajouter(classe= ??) //ce type ici
l'utilisation de la boucle ou quoi ?
[edit] cela ne marche pas..quoi de mal ?**
for(int i=1;i<6;i++)
{
rpt1.FindControl("myDiv").Controls.Add("class=id[i]");
}
Ci-dessus donne l'erreur suivante:-
La meilleure méthode surchargée match pour le Système.Web.L'INTERFACE utilisateur.ControlCollection.Ajouter(Système D'.Web.L'INTERFACE utilisateur.De contrôle)' a certains arguments non valides
Maintenant, comment puis-je définir des classes pour les divs?
pch..fait dilly erreur..apporté des modifications ..
for (int i = 1; i < 6; i++)
{
string divClass = "id";
rpt1.FindControl("myDiv").Controls.Add("class=id" + i);
}
toujours la même erreur..
[modifier]
essayé ce qui suit..ne fonctionne pas
rpt1.FindControl("myDiv").Attributes.Add("class","id" +i);
[modifier]
J'ai essayé les maintenant..
rpt1.FindControl("myDiv").Attributes["class"] = "id" + i;
il me dit "Impossible d'appliquer l'indexation [] à une expression du type "méthode " groupe" ???
OriginalL'auteur Serenity | 2010-10-23
Vous devez vous connecter pour publier un commentaire.
La ItemDataBinding façon
Afin d'obtenir un élément à l'intérieur de la répétition de l'ItemTemplate vous devez déclarer runat="Server" et de définir un id (id n'est pas vraiment nécessaire, mais simplifie les choses). Si vous le faites avec votre div vous pouvez l'obtenir à l'intérieur de votre ItemDataBound événement et de l'ensemble de la classe.
Vous devez déclarer la variable d'index et de l'incrémenter que vous définissez pour chaque classe.
Autre façon
Un moyen encore plus simple et le moyen le plus propre à mon humble avis est de définir la classe directement dans la Vue en utilisant la liaison de données
et dans le code de déclarer la méthode pour obtenir les données
J'ai oublié de jeter la valeur de retour. Pour accéder à la collection d'Attributs vous avez besoin de jeter le contrôle pour le contrôle htmlgenericcontrol.
Mise à jour de ma réponse, avec un bon casting et de l'ajout d'une autre façon que je pense est le plus propre pour la simple liaison de données d'attributs
OriginalL'auteur PHeiberg
Si vous créez le
div
comme un contrôle HTML, puis de définir la classe de cette façon:Sinon, si vous avez créé comme un serveur de contrôle (y compris la
runat="server"
attribut), alors vous pouvez le rechercher à l'intérieur de vous de contrôle de la hiérarchie et ajouter l'attribut.lorsque vous faites un clic droit->afficher la source sur le rendu de la page, c'est un attribut de classe sur la div que vous attendez? Si oui, alors c'est un problème avec votre classe css. Si non, alors c'est un problème avec la façon dont vous êtes l'ajout de l'attribut n'. Un coup d'oeil et laissez-nous savoir ce qui se passe.
OriginalL'auteur slugster
Essayez d'ajouter des pièces d'identité et runat="server" à vos balises DIV. Cela permettra de faire de chaque DIV un contrôle:
De cette façon, la ligne de code que vous utilisez pour ajouter dynamiquement la classe (ci-dessous) devrait fonctionner:
sa me donne des thsi erreur "'System.Xml.Linq.Extensions.Attributes(System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>, Système.Xml.Linq.XName) "est une "méthode", qui n'est pas valide dans le contexte donné"
J'ai besoin d'écrire ces lignes de code à l'intérieur de repeater ItemDataBound méthode ..droit ?
Si vous ajoutez le runat="server" une partie de votre div, puis la ligne de la citation que vous avez déjà eu (rpt1:.Findcontrol....) dans le code-behind devriez maintenant être en mesure d'accéder aux propriétés de la div. La raison pour laquelle il ne marchait pas avant, c'est que pour "FindControl" de travail, l'élément que vous essayez de trouver doit être un contrôle du web.
OriginalL'auteur BradB
Je ne suis pas sûr de comprendre ce que vous essayez d'atteindre exactement, mais .Les contrôles.Add("classblah") ne fonctionne pas.
C'est prévu pour quand vous souhaitez mettre un contrôle à l'intérieur qui contrôle par exemple.
qui rendrait environ
Vous voulez prendre de la li et de manipuler les attributs.
De ce que je vois au-dessus de la DIV id="div1" est en dehors de la répétition?
ah je comprends maintenant... d'autres ont donné ce que je ferais
OriginalL'auteur danswain
C'est le meilleur
OriginalL'auteur Reinyer