cs_alicia26
Messages postés65Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention 7 juillet 2009
-
1 sept. 2008 à 17:18
cs_alicia26
Messages postés65Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention 7 juillet 2009
-
3 sept. 2008 à 19:18
salut à tous!
avec le code ci dessous j'affiche dans un datalist le contenu de ma base.
maintenant j'aimerai pouvoir afficher le détail sur une autre page lors d'un clic sur le lien!
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 3 sept. 2008 à 15:01
Rebonjour,
Tu as bien une Masterpage, l'erreur est donc provoquée par page.findcontrol
Tu peux rechercher le contentplaceholder et chercher à l'intérieur DataList1, mais en l'occurrence, tu peux écrire tout simplement, pour ne pas modifier le reste :
Dim dl1 as DataList=DataList1 à la place de
Dim dl1 As DataList = CType(Page.FindControl("DataList1"), DataList)
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 3 sept. 2008 à 19:03
rebonjour,
Tu as "Référence Employés" avec un espace. Si tu as mis un espace dans ta table, tu dois mettre des crochets et écrire [Référence Employés].
Pour le reste je ne sais pas (je ne crois pas que les accents posent problèmes, mais ce n'est sûr).
Essaie déjà avec cela.
où "page_destination.aspx" est la nouvelle page à afficher, "idchamp" le nom de la variable que tu passes dans l'adresse, que tu renseignes dans databinder etc. avec l'information de ta table (ici "TonChamp") que tu dois passer à la nouvelle page.
Dans cette page de destination, tu peux alors récupérer cette information en choisissant querystring comme selectparameter lorsque tu définis ta datasource.
cs_alicia26
Messages postés65Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention 7 juillet 2009 1 sept. 2008 à 19:41
merci pour vos réponses!
je vais tester vos réponses plus tard car en entendant j'ai essayé de contourner mon problème en utilisant un gridview et un datalist.
seulement j'aimerai insérer certains champs de mon datalist et quelques textbox dans une autre table ,pour les textbox,c'est juste idtextbox.text pour récuperer la valeur alors j'ai essayer cette formule pour un champ du datalist:
Dim p As Label = CType(DataList1.FindControl("PrénomLabel"), Label)
Dim prenom As String = p.Text
lorsque je clique sur "ENVOYER" cela m'affiche
La référence d'objet n'est pas définie à une instance d'un objet.
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 1 sept. 2008 à 20:04
Bonjour,
Normalement, autre thème, autre post... mais bon.
Tu sembles oublier que, dans une datalist, ton Label sera présent autant de fois qu'il y aura de lignes. Selon les événements, les méthodes de récupération seront différentes.
Dans ton cas, si tu veux parcourir toute ta liste une fois qu'elle est créée, tu dois faire quelque chose du genre (tu peux aussi utiliser un for each) :
Dim dl1 As DataList = CType(Page.FindControl("DataList1"), DataList)
For i as integer = 0 To dl1.Items.Count - 1
Dim l1 As Label = CType(dl1.Items(i).FindControl("PrenomLabel"), Label)
...
Next
Si toutefois tu travaillais sur un événement de ta liste comme itemdatebound (qui concerne chaque item un à un et pas la liste entière), tu pourrais alors le récupérer ainsi :
Dim l1 As Label = CType(e.Item.FindControl("PrenomLabel"), Label)
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 1 sept. 2008 à 20:35
C'est un label, donc l1.text.
L'insert est bien entendu à mettre dans la boucle le cas échéant.
Mais je ne vois pas exactement ce que tu cherches à faire ...
cs_alicia26
Messages postés65Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention 7 juillet 2009 1 sept. 2008 à 20:40
juste une insertion des champs du datalist et d'autres textbox dans une même table
voici mon code insert
Sub Insert_Click(ByVal Src As Object, ByVal E As EventArgs)
Dim cnAccess As New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\WebSite1\App_Data\Bdd.mdb;")
cnAccess.Open()
Dim sIntitule, sObjet, sCont, sPay, sVil, sDeb, sFin, sDur, sInsertSQL As String
Dim dl1 As DataList = CType(Page.FindControl("DataList1"), DataList)
For i As Integer = 0 To dl1.Items.Count - 1
Dim l1 As Label = CType(dl1.Items(i).FindControl("RefEmployesLabel"), Label)
Dim l As Label = CType(dl1.Items(i).FindControl("NomFamilleLabel"), Label)
Dim l3 As Label = CType(dl1.Items(i).FindControl("PrenomLabel"), Label)
Next
sIntitule = intitule.Text
sObjet = objet.Text
sCont = cont.Text
sPay = pay.Text
sVil = vil.Text
sInsertSQL = "insert into Missions(RéfMission, Référence Employés, NomEmployés, IntituleMission, ObjetMission, Continent, Pays, Ville) values('" & RefEmployesLabel & "','" & l2 & "','" & l3 & "','" & sIntitule & "','" & sObjet & "','" & sCont & "'," & sPay & ",'" & sVil & "')"
Dim cmdInsert As New Data.OleDb.OleDbCommand(sInsertSQL, cnAccess)
cmdInsert.ExecuteNonQuery()
Response.Write("Données Enregistrées!")
End Sub
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 1 sept. 2008 à 20:50
La boucle va parcourir toute ta table, dont faire un insert pour toutes tes données.
Mais tu dois mettre ta fonction d'insertion dans la boucle for... next.
Tes données sIntitule etc. doivent bien entendu être remplies avant cette boucle.
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 2 sept. 2008 à 21:19
rebonsoir,
c'est ce que tu mets en rouge qui pose problème (c'est à dire ta datalist1) ? ou autre chose ? Si c'est cette datalist, je ne vois pas très bien, sauf si ta hiérarchie de contrôles ne permet pas d'utiliser la référence "Page" ou si tu n'as pas de contrôle dont l'id est "DataList1". Mais apparemment ce n'est pas cela...
cs_alicia26
Messages postés65Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention 7 juillet 2009 3 sept. 2008 à 09:47
bonjour
oui,c'est justement çà,je mets en rouge l'erreur qui m'est transmise à la débog. L'id de mon contrôle est bien DataList1.
Qu'appelles tu la référence 'Page'?
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 3 sept. 2008 à 11:34
Bonjour,
Je voulais dire page.findcontrol qui ne peut pas être utilisé par exemple avec une Master Page.
Eventuellement, si tu ne trouves pas (ça ne doit pas être grand-chose), peux-tu envoyer tout ton code (vb et asp) en "message privé" (sous ton message, à côté de Rép. et du nombre de messages envoyés, tu as "MP"), pour aller plus vite...
cs_alicia26
Messages postés65Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention 7 juillet 2009 3 sept. 2008 à 18:31
merci GGtry!
cette erreur est résolue.
Je ne sais pas si je dois faire un autre post mais au debug ,il m'affiche
Erreur de syntaxe dans l'instruction INSERT INTO.
Dim dl1 as DataList=DataList1 For i As Integer = 0 To dl1.Items.Count - 1
Dim l1 As Label = CType(dl1.Items(i).FindControl("RefEmployesLabel"), Label)
Dim l2 As Label = CType(dl1.Items(i).FindControl("NomFamilleLabel"), Label)
Dim l3 As Label = CType(dl1.Items(i).FindControl("PrenomLabel"), Label)
je regarde mais je vois pas,je pense qu'un second œil sera la bienvenue.
je tiens à préciser que je ne tiens pas à insérer les données dans touts les champs.Certains sont définies NULL, et peuvent ne pas contenir des champs sur cette page, mais sur une autre!!
cs_alicia26
Messages postés65Date d'inscriptionlundi 21 mai 2007StatutMembreDernière intervention 7 juillet 2009 3 sept. 2008 à 19:18
SUPER,c'est cool
c'est justement çà,merci GGtry!!
Tu m'as vraiment retirer une grosse épine du pied,sans ton aide,je ramais encore et j'y serais pas arrivé.
Merci GGtry!!!