cs_drakula
Messages postés2Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention27 août 2004
-
25 août 2004 à 12:48
cs_drakula
Messages postés2Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention27 août 2004
-
27 août 2004 à 09:59
Salut la compagnie !
Voila j'ai un leger soucis, je voudrais recuperer la valeur d'une checkbox html qui est contenue dans une datalist dont voici le source :
Dans mon code behind, j'ai déclaré une variable "checkbox" de type System.Web.UI.HtmlControls.HtmlInputCheckBox
et mon recuperer celle-ci voila comment je m'y prend :
Dim listItem As DataListItem
Dim cbxTest As System.Web.UI.HtmlControls.HtmlInputCheckBox
For Each listItem In dlProductRange.Items
cbxTest = CType(listItem.FindControl("cbxPR"),
System.Web.UI.HtmlControls.HtmlInputCheckBox)
Response.Write( cbxTest.Value() & "
")
Next
La methode findControl me renvoi null a chaque fois
Alors ma question est : Où est le probleme ?
font=Comic Sans MS]C'est pô moi, j'ai rien touché !Sans MS
Car qd tu recherche cbxPR il n'existe pas. Ton Datalist va te modifier l'id du Checkbox, pour que celui ci devienne unique, en effet dans ton datalist, tu as <INPUT type="checkbox" name="cbxPR" id="cbxPR" et chaque balise input doit avoir un name et id unique.
Mais je me rappelle plus comment faire ca proprement, il existe bien des bidouilles car il me semble que l'id du checbox sera de la forme cbxpr1 et le suivant cbxpr2 etc... donc l'astuce consisterait à faire une boucle de ce genre
dim i as integer
For Each listItem In dlProductRange.Items
i += 1
cbxTest = CType(listItem.FindControl("cbxPR" & i.tostring),
System.Web.UI.HtmlControls.HtmlInputCheckBox)
Response.Write( cbxTest.Value() & "
")
Next
mais je trouve pas cette méthode tres propre ... et comme j'ai pas l'habitude de travailler avec ces objets, je ne sais plus comment le faire proprement (et ca m'enerve !!!)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 26 août 2004 à 13:49
Voici une solution non testé.
Cette solution est un peu plus propre, mais aussi un peu plus bourrin ... :big)
Ce que je fais : je fais une nouvelle class : qui est une collection de Checkbox
Private Class CheckBoxCollection
Inherits CollectionBase
Default ReadOnly Property Item(ByVal index As Int32) As CheckBox
Get
Return CType(Me.List.Item(index), CheckBox)
End Get
End Property
Public Function Add(ByVal Check As CheckBox) As CheckBox
Me.List.Add(Check)
Return Check
End Function
End Class
puis je regarde tout les controls du datalist, et si il y en a qui est un checkbox, je l'ajoute à la collection
Dim CheckBoxColl As New CheckBoxCollection
For Each c As Control In dl.Controls
Try
CheckBoxColl.Add(CType(c, CheckBox))
Catch ex As Exception
End Try
Next
For Each Check As CheckBox In CheckBoxColl
Response.Write(Check.Text & " " & Check.Checked)
Next
(dl est le nom du datalist)
attention, ca met tout les checkbox du datalist ... si tu veux ajouter juste les checkbox ayant l'id cbxPR il faudrais surement faire un truc de ce genre :
Try
Dim Check As CheckBox = CType(c, CheckBox)
If Check.ClientID.Substring(5) = "cbxPR" Then
CheckBoxColl.Add(Check)
End If
Catch ex As Exception
End Try
Je sais pas si ca marche, car j'ai pas testé, mais je vois pas de problème, par contre j'emet un gros doute pour le dernier bout de code :)