Pourquoi tu t'obstine à vouloir mettre un control textbox dans ton arraylist (ou dans ton objet) !!! juste la valeur, c'est tout !!
Pourquoi tu t'obstine à vouloir mettre un control textbox dans ton arraylist (ou dans ton objet) !!! juste la valeur, c'est tout !!
désolé désolé ^^
bon la ca marche a peu pres, je nai pas encore fait la recuperation mais je met juste mon code, car il peux peut etre servir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 public class MonObjet Public champ_label2 As String Public champ_textbox2 As String Public ReadOnly Property champ_label As String Get Return champ_label2 End Get End Property Public ReadOnly Property champ_textbox As String Get Return champ_textbox2 End Get End Property Public Sub New(newchamp_label2 As String, newchamp_textbox2 As String) Me.champ_label2 = newchamp_label2 Me.champ_textbox2 = newchamp_textbox2 End Sub end class ........ function x dim monArray as new ArrayList() for i=1 to ds.tables("datestest").Columns.Count-1 monArray.add(New monObjet(ds.tables("datestest").Columns(i).ColumnName, "")) next i Repeater1.DataSource = monArray Repeater1.DataBind() end function . . . </script> <repeater ...> <ItemTemplate> <tr> <td> <asp:Label id="champ_label" text='<%# DataBinder.Eval(Container.DataItem, "champ_label") %>' runat="server" /> </td> <td> <asp:textbox id="champ_textbox" Text='<%# DataBinder.Eval(Container.DataItem, "champ_textbox") %>' Runat="server" /> </td> </tr> </ItemTemplate> </repeater>
Merci guitoux
je te tien au courant
ok pour la recuperation , je procede comme ci dessous:
Dim RepeaterItem As RepeaterItem
Dim monTxtResultat As TextBox
for each RepeaterItem in repeater1.Items
monTxtResultat = Me.FindControl("champ_textbox")
Response.Write(monTxtResultat.Text)
Next
neanmoins, j'obtien encore et toujours une erreur de
Object reference not set to an instance of an object
saurais tu pourkoi ?
essai plutot
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for each RepeaterItem in repeater1.Items monTxtResultat = RepeaterItem .FindControl("champ_textbox") Response.Write(monTxtResultat.Text) Next
non jai toujours un probleme d'objet non reconnu
je vais faire quelques tests.
sinon j'aimerai connaitre le type des données présente dans ma table , pour pouvoir agir sur ce que l'utilisateur rentre dans les textbox.
jai utilisé la fonction :
ds.tables("datestest").Columns(ds.tables("datestest").Columns(i).ColumnName).DataType.ToString()
avec ds mon dataset,
table la table lié a mon dataset
il me sors comme reponse :
des System.String et des system.int32
le probleme, c'est que dans ma table il y a un champ de type date, et il ne semble pas en tenir compte. y'a til une autre maniere dacceder au type de champ de sa table ?
ok javance javance ... ou pas![]()
pour eviter les problemes d'instanciation, jai rajouter les quelques lignes :
Dim RepeaterItem As new RepeaterItem
for each RepeaterItem in repeater1.Items
dim monTxtResultat as new textbox
montxtresultat.text = "maison"
monTxtResultat = RepeaterItem .FindControl("champ_textbox")
Response.Write(monTxtResultat.Text)
Next
bon j'obtiens une nouvelle erreur, qui explique peut etre pourkoi cela ne veut pas marcher. Je n'ai pas l'impression qu'il connait bien RepeaterItem et les élement de mon repeater. Le message est le suivant :
Argument not specified for parameter 'itemIndex' of 'Public Sub New(itemIndex As Integer, itemType As System.Web.UI.WebControls.ListItemType)'.
l'erreur est typiquement vb.net ...
ou est placé ce code ? dans une méthode particulière ? si oui, merci d'afficher tout le code
PS : merci aussi de mettre la balise autour du code, c plus lisible
bonjour guitoux,
oui ce code est placé dans une méthode, qui est appelée lors de l'appuie sur un bouton
et dans un autre sub j'ai la mise en place des élement du repeater :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 sub update(sender As Object, e As System.EventArgs) ... Dim RepeaterItem As RepeaterItem Dim monTxtResultat As TextBox For Each RepeaterItem In repeater1.Items monTxtResultat = ctype(Me.FindControl("txtResultat"),textbox) 'Response.Write(monTxtResultat.Text) Next ... end sub
enfin , je declate mon repeater dans l'aspx :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 sub affiche_fiche(sender As Object, e As System.Web.UI.ImageClickEventArgs) for i=0 to ds.tables("datestest").Columns.Count-1 response.write(ds.tables("datestest").Columns(ds.tables("datestest").Columns(i).ColumnName).DataType.ToString()) monArray.add(New monObjet(ds.tables("datestest").Columns(i).ColumnName, "")) next i Repeater1.DataSource = monArray Repeater1.DataBind() end sub
j'ai vraiment besoin de ton aide car la je bloque vriament
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <asp:Repeater id="Repeater1" runat="server" EnableViewState="FALSE"> <ItemTemplate> <tr bgcolor="#e8e8e8"> <td> <asp:Label id="champ_lab" text='<%# DataBinder.Eval(Container.DataItem, "champ_label") %>' runat="server" /> </td> <td> <asp:textbox id="champ_text" Text='<%# DataBinder.Eval(Container.DataItem, "champ_textbox") %>' Runat="server" /> </td> </tr> </ItemTemplate> </asp:Repeater>![]()
Moi je ferais (attention, je connais pas VB.Net, c'es approximatif)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 sub update(sender As Object, e As System.EventArgs) ... Dim repeat As RepeaterItem Dim monTxtResultat As TextBox For Each repeat In repeater1.Items monTxtResultat = ctyperepeat.FindControl("champ_text"),textbox) 'Response.Write(monTxtResultat.Text) Next ... end sub
MerrrrrrCiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
c'est cela !!!! . Alors je n'ai pas saisie pourquoi le me ne fonctionnait pas, néanmoins, je remet la structure correcte ( il y avait une ou 2 faute)
Encore merci guitoux, je ne saurais pas ce que j'aurais fait sans toi .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 sub update(sender As Object, e As System.EventArgs) ... Dim repeat As RepeaterItem Dim monTxtResultat As TextBox For Each repeat In repeater1.Items monTxtResultat = repeat.FindControl("champ_text") Response.Write(monTxtResultat.Text) Next ... end sub
Partager