jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 20 juil. 2005 à 09:39
si t'as bien mis un runat=server normalement non
par contre rpti.findcontrol c'est pas possible comment veux tu qu'il te trouve un controle dans ton repeater alors que t'as plusieurs ligne ? donc plusieurs controle ? il faut se placer sur ta ligne !
cs_DevilYann
Messages postés57Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention12 septembre 2007 22 juil. 2005 à 10:35
J'ai trouvé pour le problème des caractères bizarres.
En fait en voulant faire du zèle de présentation dans mon code HTML, je sautais une ligne après les balises <tr> :
<td id = "codorg" runat="server">
<%# DataBinder.Eval(Container.DataItem,"Codorg") %>
</td>
Or il ne faut pas, il faut le laisser sur la même ligne :
<td id = "codorg" runat="server"><%# DataBinder.Eval(Container.DataItem,"Codorg") %></td>
Faut que je me calme dans la présentation, ca me jouera un tour... ;o)
cs_DevilYann
Messages postés57Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention12 septembre 2007 17 juil. 2005 à 15:32
Merci Cyril pour la première réponse.
Je suppose qu'il daudra faire un "FindControl" pour récupérer la valeur du coche ?
Pour la deuxième question j'aimerai faire un truc du genre :
Quand on passe le curseur de la souris sur une ligne du repeater, pouvoir changer automatiquement la couleur de la ligne survolée pour remettre son ancienne couleur quand on enleve le curseur.
Comme j'ai vu que l'évènement "onmouseover" (et plein d'autres ) existait, je me demandais comment l'utiliser.
Mais s'il y a une autre méthode je suis preneur...
DevilYann,
Programmer c'est mon métier mais pas ma passion...
Vous n’avez pas trouvé la réponse que vous recherchez ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 17 juil. 2005 à 15:51
Oui il faudras faire un findcontrol sur e.item dans l'evenement databound du datagrid c'est à dire quand asp.net chargera les données pour chaque ligne
Ce que tu veux faire c'est coté client (va absolument falloir que j'ecrive un truc la dessus) donc pour faire ce que tu veux, il va falloir passer par CSS ou javascript.
Sinon il suffirait de mettre une classe sur le tableau et de mettre en CSS
table.MaClass tr:hover {background-color:#F0F;}
mais au grand diable IE ne comprend pas le :hover sur autre chose que les a :/ on a bien la solution du csshover.htc (google) mais ca se complique trés vite avec des choses trés complexes. Une autre solution est de passer par du javascript, en gros
tu fais une fonction
function bidule(id)
{
var trs = document.getElementById(id).getElementsByTagName('TR');
for( i = 0; i < trs.lenght ; i ++)
{
trs[i].onmouseover = function(){trover(this);};
trs[i].onmouseover = function(){trout(this);};
}
function trhover(elmt)
{
elmt.style.backgroundColor = '#F0F';
}
function trout(elmt)
{
elmt.style.backgroundColor = '#FFF';
}
Voila rapidement en gros le javascript :) mais tu peux aussi essayer le fichier csshover.htc qui marche bien dans les cas simples (moi j'aime pas car je travaille sur des choses trés complexes en CSS et javascript et c pas bon :p)
le code ci dessus est bien sur fournis avec des bugs ;) (ou alors t'as de la chance :p)
cs_DevilYann
Messages postés57Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention12 septembre 2007 17 juil. 2005 à 21:47
Ok merci pour ton message.
Je vais essayer ça demain au boulot pour voir ce que je peux en faire.
Je continuerai à poster des messages si j'ai d'autre soucis. Cela pourra toujours servir aux autres.
PS : cela fait un moment que je n'ai pas fait de HTML. Apres 4 ans de C, VB et C#, j'ai du mal à m'y remettre car c'est de l'histoire ancienne.
Merci de me refraichir la mémoire...
DevilYann,
Programmer c'est mon métier mais pas ma passion...
cs_DevilYann
Messages postés57Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention12 septembre 2007 18 juil. 2005 à 13:19
Tant que j'y suis (si j'abuse il faut le dire...) comment fait-on pour connaitre le texte d'une colonne du repeater ?
Je parcours tout le repeater et les lignes cochées par l'utilisateur vont être supprimées de la base. Mais pour cela j'ai besoin de connaitre la valeur de la première colonne de la ligne cochée...
J'ai utilisé un databind pour lier les données.
Comment connaitre la valeur de "Codorg" une fois que j'ai détecté que la case est cochée ?...
Sachant que "Codorg" n'est pas un textbox mais une valeur databindée avec un dataset.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 19 juil. 2005 à 14:48
arf je pensais avoir répondu :(
(re)
Ton code HTML est horrible !!! pourquoi faire un tableau pour des données non tabulaire ? ca tout le monde l'utilise mais surtout pourquoi utiliser des horribles font ??? quand je dis horrible je pese mes mots ...
sinon pour recuperer ton controle, il "suffit" de recuperer ta ligne puis de faire un findcontrol ... mais quand est-ce que tu veux recuperer la ligne ? sur une bouton ? sur quoi ?
cs_DevilYann
Messages postés57Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention12 septembre 2007 19 juil. 2005 à 15:11
Je ne regarde pas ton code dans le détail mais je me presse de répondre à ta question. Je m'en occuperrai un peu plus tard pcq j'ai un autre truc sur le feu.
Je veux récupérer mon code quand l'utilisateur cliquera sur un bouton "Ajouter".
Et pour toutes les lignes cochées de mon repeater, je les ajouterai (gràce à "codorg" qui fait partie de la clé primaire) à la table de base de donnée.
Voilà.
re-re-PS : dans ton exemple le findcontrol portera sur quel ID pour récupérer la valeur de "codorg" ?
PS : dsl pour mon code html horrible... mais pkoi le font est si horrible (voir plus) que ça ?...
re-PS : après le code, j'ai une autre "colonne" avec le libellé de code ce qui fait au final :
cs_DevilYann
Messages postés57Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention12 septembre 2007 19 juil. 2005 à 15:59
Bon ok j'ai vu qu'il vallait mieux utiliser l'option "style" qui marche très bien avec une jolie boite de dialogue qui permet d'appliquer pas mal d'effet.
Encore un bon point pour toi ;o)
quand j'aurai un moyen de récupérer le code organisme , j'aurai fait 80% du boulot souhaité...
pour la balise font c'est horrible car un document html on ne met QUE des données pas de fioritures de présentation, ca c'est le role de CSS ;) pour info c'est ce que j'ai fait avec le menu de ce site, ca m'a permis de faire passer le menu de 120ko à 18ko ...
pour ton problème il faudra je crois iterer sur chaque ligne de ton datagrid, donc en gros sur le bouton, tu vas chercher le datagrid, puis faire une sorte de
for each r as datarow in me.dg1.datagrid.rows()
r.findcontrol("")
next
cs_DevilYann
Messages postés57Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention12 septembre 2007 19 juil. 2005 à 16:59
Pour ce qui est de la boucle des lignes de mon repeater, je l'ai fait depuis longtemps.
Récupérer la valeur cochée de mon checkbox c'est fait aussi (en utilisant un findcontrol).
La seule chose qui me manque actuellement, c'est de récupérer la valeur du code organisme.
Or tu me proposes de le faire avec Findcontrol. Je veux bien mais je n'ai pas d'id sur ce code organisme... Je ne peux pas faire Findcontrol("CodOrg"), c'est pas possible... Doit bien y avoir un moyen quand même... :'(
Je donne le bout de code qui permet de récupérer la valeur cochée d'un repeater appelé "rpt_Organismes" contenant des cases à cocher s'appelant "cb_SupprAffectation", cela pourra toujours servir à qqun :
foreach(RepeaterItem rpti in ((Repeater)FindControl("rpt_Organismes")).Items)
{
CheckBox chk_Sel = (CheckBox)rpti.FindControl("cb_SupprAffectation");
if(chk_Sel != null && chk_Sel.Checked)
{
// C là que je suis sensé récupérer la valeur de Codorg...
}
}
Ce bout de code marche, c'est testé.
PS : promis je vais essayer de me mettre au CSS même si le temps pour réaliser l'applic défile...
la le problème c'est que ca va te balancer un uniqueID sur chaque ligne donc un nom un rallonge donc un agrandissement de la page, mais c'est la solution la plus simple.
perso, moi je ferais de la bidouille ;) et il me resterais seulement le minimum de HTML possible, juste les données, un peu de html quand meme 1 ou 2 id puis c'est tout ;)
CSS faut avoir le temps pour s'y mettre, moi je suis étudiant et donc j'ai le temps, surtout que je viens de me taper une année de fac inutile, alors avec la fac j'ai eu BEAUCOUP de temps libre pour apprendre.
CSS c'est pas compliqué, mais c'est surtout l'habitude :) mais déja si tu oublies les balises font, b etc... et que tu met des styles ce sera deja pas mal ;) prochaines etapes mettre des classes, utilisez les tableaux pour des données tabulaire, utilisez une sémantique correcte etc.... c'est loin d'etre evident, mais tout à fait possible, regarde sur la page d'accueil de CodeS-SourceS, j'ai UN tableau de présentation seulement pour compatibilité avec les vieux dinosaures, et tout le reste et dans un fichier css http://www.aspfr.com/dccs/2.csss normalement :p ca permet de mettre pleins d'infos tout en gardant une page trés légére :)
J'ai encore un tout petit problème... Cela me donne :
str_Codorg = "\r\n \t\t\t\t\tV790\r\n\t\t\t\t\t\t"...
"V790" est noyé dans les caractères de présentation... C normal ?
PS : promis, une fois que j'ai ce code, je me tais pendant au moins 2 semaines vu que je suis en vacances... ;o)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 20 juil. 2005 à 11:29
les \r\n etc... ca vient de ta bdd, c'est en fait des sauts de ligne, donc la faut regarder dans la bdd pour faire ce que tu veux, c'est bizarre comme truc, mais c'est possible, par contre je sais pas comment résoudre ca :p