Code:
1
2
3
4
5 For Each RepeaterIt In repeater1.Items Dim item as new monobjet("","") item = RepeaterIt .DataItem ....
Version imprimable
Code:
1
2
3
4
5 For Each RepeaterIt In repeater1.Items Dim item as new monobjet("","") item = RepeaterIt .DataItem ....
oui excuse moi je voulais mettre ca. mais il me dit que l'objet n'est pas instancié.
je procede pourtant de la meme maniere que au dessus mais cette fois je narrive pas a acceder a mes objet champ_textbox2 et champ_label2
Il te fait une erreur où ??
Sinon, tu as oublié de caster le retour de FindControl() en textbox ou en checkbox selon le cas. (FindControl() te retourne un type générique Control)
il mindique une erreur sur le select item.champ_textbox2, pour lui , il nest pas definie ( comme pour champ_label2 du reste )
j'ai essayé de rajouté un test sur le type d'élement ( on verifie que l'on n'est ni dans le footer ni dans le header mais ca ne change rien
Pardon, il faut aussi caster le retour de RepeatIt.DataItem en MonObjet :oops:
merci, jai tou caster, mais j'obtien la meme erreur :oops:
Object reference not set to an instance of an object. select item.champ_textbox2Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 For Each RepeaterIt In repeater1.Items if (RepeaterIt.ItemType = ListItemType.Item or RepeaterIt.ItemType = ListItemType.AlternatingItem) then Dim item as new monobjet("","") item = CType(RepeaterIt.DataItem, Monobjet) select item.champ_textbox2 'select tampon case "System.String" monTxtResultat = CType(RepeaterIt.FindControl("champ_textbox"), textbox) case "System.Boolean" monTxtcheckbox = CType(RepeaterIt.FindControl("champ_checkbox"), checkbox) case "System.Double" monTxtResultat = CType(RepeaterIt.FindControl("champ_textbox"), textbox) case "System.int32" monTxtResultat = CType(RepeaterIt.FindControl("champ_textbox"), textbox) end select end if
ca ne pourrais pas venir du fait que la jessaye dy acceder apres un pseudo submit, et que du coup les champ ne sont plus disponible ?
C'est qu'il a pas gardé dans le ViewState les données liées à ton repeater.
Dans ce cas, tu peux faire ça (C#) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 foreach(RepeaterItem item in Repeater1.items) { if (item .ItemType == ListItemType.Item || item .ItemType == ListItemType.AlternatingItem) { Control txtBox_tmp = item.FindControl("champ_textbox"); Control ckBox_tmp = item.FindControl("champ_checkbox"); if (txtBox_tmp != nul) // Cas ou c'est une checkBoxà { TextBox txtBox = txtBox_tmp as TextBox; } if (ckBox !=eckBox ckBox = ckBox_tmp as CheckBox; } null) // Cas où c'est une checkbox { Ch ... } }
Qu'appel-tu un "pseudo submit" :? :? 8OCitation:
Envoyé par dyree
oui mais non :)
car mes Deux checkbox et textbox sont declaré donc ces tests seront toujours vrai non ?
en revanche je peux tester leur visibilité non ?
j'avoue c'est pas terrible mais si ca marche ...
Ben joue sur la visibilité alors...
Mais sinon, le ViewState est-il bien activé sur ta page / ton controle ??
oui il est activé sur la page ( dans les propriété de webmatrix ) et sur le repeater dans la déclaration.
car marche bien pour la visibilité
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 if (RepeaterIt.ItemType = ListItemType.Item or RepeaterIt.ItemType = ListItemType.AlternatingItem) then if RepeaterIt.FindControl("champ_textbox").Visible = true then monTxtResultat = CType(RepeaterIt.FindControl("champ_textbox"), textbox) myDataRow(tampon) = monTxtResultat.Text end if if RepeaterIt.FindControl("champ_checkbox").Visible = true then monTxtcheckbox = CType(RepeaterIt.FindControl("champ_checkbox"), checkbox) if moncheckbox.checked = true myDataRow(tampon) = "true" else myDataRow(tampon) = "false" end if end if