marhoa
Messages postés41Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention17 octobre 2006
-
17 août 2005 à 15:05
marhoa
Messages postés41Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention17 octobre 2006
-
24 août 2005 à 11:29
Je cherche à afficher des données dans un repeater mais je veux en plus pouvoir modifier ce que je vais afficher en fonction de certaines données que je récupère dans mes tables (j'ai vu une discussion qui en parlait -http://www.aspfr.com/forum.v2.aspx?id=90350- mais ça ne m'a pas permis de m'en sortir ).
J'ai donc voulu intégrer des TextBox pour pouvoir les afficher ou les cacher mais je ne pouvais pas y accèder.
J'ai alors tenté de remplacer la table de mon repeater par un UserControl contenant une table avec des TextBox ( normalement ça marche, je l'ai vu sur d'autres sites ), oui mais maintenant c'est le userControl placé dans mon Repeater que je n'arrive pas à récupérer.
Mais ça marche pas, il me renvoie l'erreur suivante ( pas très gentille d'ailleurs ):
Object reference not set to an instance of an object.
Je trouve pas ça très cool de ça part, mais ce qui est encore moins cool c'est que, quand je remplace "UCRep1" ou "TB_Nom" par n'importe quoi d'autre, il me met la même erreur, il ne se rend pas compte que ça n'existe pas.
Ca veut dire ke les 2 FindControl ils ont rien touvé du tout. :(
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 22 août 2005 à 09:38
J'ai parfois l'impression que la plupart des gens ne connaisssent pas cette fonctionalité pourtant basique :)
sur la ligne de ta fonction tu appuies sur F9 ce qui rajoutera un point d'arret puis tu fais F5 pour lancer en debug :) et tu pourras voir la valeur de toutes les variables ...
marhoa
Messages postés41Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention17 octobre 2006 22 août 2005 à 11:50
Losque j'appuie sur F9, il se passe rien. J'imagine qu'il doit s'afficher un rond rouge à gauche de la ligne.
Ca viendrait pas du fait que tu utilise VS alors que moi j'utilise WebMatrix?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 22 août 2005 à 11:57
arf c'est vrai que webmatrix est trés trés limité au niveau de tout, c'est meme une honte que Ms ai sortit ca ... heureusement ils se sont rattrapé en sortant visual web dev pour .net 2 :)
Donc si tu peux utiliser soit VS soit VWD tu verras ce sera beaucoup plus simple pour tout :) sinon tu as toujours le response.write :(
for each c as control in e.item.controls
response.write(c.getType.tostring)
next
Mais ton code tu l'as mis ou ? tu l'as bien mis sur l'evenement databound (ou qqchose du genre) du repeater ?
marhoa
Messages postés41Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention17 octobre 2006 22 août 2005 à 14:48
c pas gentil de critiquer WebMatrix, il est gratuit, il est pas lourd et il y a un serveur local, c'est quand même sympa pour tester ses applications quand t'as pas de serveur. Maintenant j'en ai un donc c'est vrai que je pourrais passer à autre chose. VisualWebDev, c'est gratuit?
Sinon mon code est bien dans la fonction
void ListeInterventions_ItemDataBound(object sender, RepeaterItemEventArgs e)
et quand j'utilise ton bout de code utilisant Response.Write, il affiche bien les noms des éléments présents dans mon repeater par contre quand je fais:
Response.Write( e.Item.FindControl("UCRepeater1").ID );
il est pas content alors que UCRepeater est bien un ID, je l'ai affiché dans le for:
foreach(Control c in e.Item.Controls)
{
Response.Write( " " + c.ID );
}
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 22 août 2005 à 16:29
Je me rappelle plus :$
En ce moment je fais du javascript et ca fait "longtemps" que j'ai pas touché à .net (honte à moi)
j'y regarde ce soir, dès que j'ai le temps :)
Si je critique WebMatrix il y a plein de raison, certe il est gratuit, mais il ne sert pas à grand chose, on ne tire pas de la puissance de la technologie ... et c'est vraiment bien dommage :-/ je trouve que ca a été un outil pour concurrencer php, pour que les débutants se mettent à cette techno plutot que php, mais il n'a jamais permis de faire des choses correcte :-/
Visual Web Dev, est pour l'instant gratuit, mais pour l'instant en beta2 (stable ce site tourne dessus) et il permet beaucoup de se servir de .net comme il se doit, il possede bien sur un mini serveur (qui s'appelle cassini et on est pas obligé d'avoir webmatrix pour l'utiliser :)) le seul problème c'est que c'est du .net 2 donc beta jusqu'a novembre, son prix final devrait etre modique, je me souviens plus mais pas enorme par rapport a ce qu'il offre. http://lab.msndn.microsoft.com/
pour ton problème je m'y replongerais ce soir :) car la je vois pas :/
marhoa
Messages postés41Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention17 octobre 2006 24 août 2005 à 11:29
Ok, ça marche comme ça:
Control c = (Control)e.Item.FindControl("UCRepeater1");
TextBox tbNom = (TextBox)c.FindControl("TB_Nom");
tbNom.Text = "nom prénom";
j'arrive à atteindre les textbox et labels de mon usercontrol et je peux les modifier mais ça va pas, j'arrive pas à faire ce que je veux - et le bouquin de richard clark qui est toujours en rupture de stock! je suis au bord de la crise de nerfs! :) -
J'essaie plein de trucs et il y a toujours un endroit ou ca bloque.
Avec le usercontrol, on est obligé de travailler dans une fonction récupérant en paramète une variable de type RepeaterItemEventArgs, ce qui est le cas uniquement pour ItemCreated et ItemDataBound si j'ai bien compris. Malheureusement lorsque ces évenements sont éxecutés, il semble que les données ne sont pas encore écrites sur la page, moi qui voulait faire des tests sur ces données ! :( En plus, je sais pas comment récupérer les données de ma requète à partir de là ( je sais je suis nul ) ...
J'ai aussi réessayé en enlevant le usercontrol et en mettant les textbox et label directement dans le repeater mais là non plus j'arrive pas à accéder aux données.
TextBox tbAdresse = (TextBox)ListeInterventions.FindControl("TB1");
if( tbAdresse !null ) tbAdresse.Text "il est là!!!";
Avec ça, il affiche rien dans mlon textbox et si je fais pas le test y'a une erreur de référence sur l'objet.
En tout ca merci, tu m'as bien fait avancer, t'embète pas à essayer de comprendre, je vais laisser comme c'était avant, c'est plus moche mais ça marche et surtout il faut que j'avance dans mon projet ( je verrai ça plus tard si j'ai le temps)
Encore une fois merci de ton aide.