BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 2011
-
25 juin 2008 à 15:34
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 2011
-
26 juin 2008 à 05:58
Bonjour !
suite a une solution qu'on m'a donné sur un dropdownlist, j'essais de trouver mes controles sur ma page avec cette fonction :
Protected
Sub Page_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Load
Dim ddl
As
New DropDownList
Dim ddlc
As
String
Dim rs
As
New ADODB.Recordset
Dim sqlTxt
As
String
Connexion = MySQL_Conn(
"localhost",
"bd",
"root",
"pw")sqlTxt "SELECT * FROM lros WHERE ( team 23 )"
rs = Connexion.Execute(sqlTxt)
For n
As
Integer = 47
To 50
ddlc =
"DropDownList" & n
ddl =
CType(Page.FindControl(ddlc), DropDownList) dosave(rs,ddl)
Next
End
Sub
____________
"ddl = CType(Page.FindControl(ddlc), DropDownList) " retourne toujours nothing et pourtant le dropdownlist47 existe bien sur la page..
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 20111 26 juin 2008 à 05:58
Bien voila la solution!
Exactement la masterPage de asp.net change la donne en fouillant avec le findcontrol. En résumé on doit pas l'utilisé car les controle dans une masterPage n'est plus sous forme hierarchique dans la page..en tout cas c'est ce que j'ai vue.
En faisant quelques test je me suis rendu compte qu'il faut faire un drill down dans chaque "content" si je sais pas ou se trouve les dropdownlist
Donc je devais fouiller en plusieurs étapes dans mes controles et la ca devenait l'enfer. Je m'en suis sorti avec la methode recursive. Je pense que cette fonction pourra aider bien du monde avec les masterPage (d'ailleur avec toutes les pages). ET la j'obtient mon ddl que je peux sauver. En réalité la fonction Findcontrol aurais du etre récursive au départ pour pas qu'on ait besoin de développer des functions pour réparer une erreur de asp, Merci de ton aide GGTRY j'en ai appris pas mal ce soir!
Protected
Sub Button1_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
Dim
ddl
As
New
DropDownList
Dim
ddlc
As
String
Dim
rs
As
New
ADODB.Recordset
Dim
sqlTxt
As
String
Connexion = MySQL_Conn(
"localhost"
,
"nhlpc"
,
"root"
,
"delcon"
)sqlTxt "SELECT * FROM lros WHERE ( team 23 )"
rs = Connexion.Execute(sqlTxt)
For
n
As
Integer
= 47
To
50
ddlc =
"DropDownList"
& n
ddl = FindControlRecursive(Page.Master, ddlc)
dosave(ddl,rs)
Next
End
Sub
Private
Function
FindControlRecursive(
ByVal
rootControl
As
Control,
ByVal
SearchString
As
String
)
As
Control
If
(rootControl.ID = SearchString)
Then
Return
rootControl
End
If
For
Each
ctl
As
Control
In
rootControl.Controls
Dim
ControlWanted
As
Control
ControlWanted = FindControlRecursive(ctl, SearchString)
Gastaropod
Messages postés10Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention26 juin 2008 25 juin 2008 à 16:16
A quel moment tu crées tes dropdownlists ?
Peut-être qu'il retourne nothing parce qu'il ne sont pas encore initialisés, puisqu'aparemment, tu n'en es encore qu'au load, et rien n'indique que tu as initialisé des dropdownlists
Vous n’avez pas trouvé la réponse que vous recherchez ?
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 20111 25 juin 2008 à 16:30
J'ai déplacer les instructions dans un evenement button_click. Toujours la meme chose..
Je suis vraiment embêté. Est possible que les dropdownlist ne sont pas trouvé a cause qu'il sont entre des
????
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 20111 25 juin 2008 à 16:57
Le site est une ligue d'hocker simulé. Il sont creer tous au départ. Ils sont dans la page dan une table a l'interrieur de cellule. Il a environ 50 et plus de dropdownlist relie a une seul datasource. Le but de la page est de selectionner le joueur qui va joué sur un ligne. Chaque joueur sur une ligne est representé par un ddl. il ya 5 joueurs par ligne et il ya environ 14 lignes différentes (powerplay, penality kill etc). Donc je me retrouve avec beaucoup de ddl. Mais ils sont tous créer au départ. il ya pas de creation ddl apres le load.
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 25 juin 2008 à 20:00
Je ne comprends pas très bien.
Si dans la procédure du buttonclick tu essaies de remplir un label avec ddl.selecteditem.text, ça marche, non ?
Le problème se pose apparemment ailleurs que dans le code que tu donnes.
Qu'est censé faire ton DoSave ?
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 20111 25 juin 2008 à 20:43
Je réexplique le problème: c'est que la variable ddl ne pointe jamais au dropdownlist que je cherche. elle possede toujours la valeur nothing meme apres avoir "ddl = CType(Page.FindControl(ddlc), DropDownList)"passer par cette commande. C'est comme ci le findcontrol n'a pas trouvé l'objet.
Dim ddl As New DropDownList
Dim ddlc As
String
Dim rs As New ADODB.Recordset
Dim sqlTxt As
String
Connexion = MySQL_Conn("localhost", "bd", "root", "pw")sqlTxt "SELECT * FROM lros WHERE ( team 23 )"
rs = Connexion.Execute(sqlTxt)
For n AsInteger = 47 To 50
ddlc = "DropDownList" & n
ddl = CType(Page.FindControl(ddlc), DropDownList) dosave(rs,ddl)
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 25 juin 2008 à 21:53
Bonsoir,
Très franchement, je ne vois pas comment il pourrait se faire, si tu as bien des contrôles nommés DropDownList47, DropDownList48, etc., que ddl soit nothing.
Comment sais-tu que ddl est nothing si tu n'as pas d'erreur ?
C'est ça que je voudrais savoir, car sinon, ton problème me semble difficilement explicable.
Tu ne dis pas d'ailleurs ce que fait ton doSave...
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 20111 25 juin 2008 à 22:15
Assez simple....ddl est égale a nothing car je le suis pas a pas au debugeur. Et en plus dans la fenetre espion je suis aussi les valeur de PAGE. Et si je fouille a l'interrieur des valeur de Page bien je vois tous mes dropdownlist ...c'est assez bizarre que findcontrole les trouves pas je les vois quand j'explore les valeurs de "Page". C'est a n'y rien comprendre.
Dosave n'est pas important il sauvegarde la valeur qui a été sélectionné dans le drowdownlist selon le id de celui il correspond a un champs dans la table LROS. Mais ca fonctionne bien si j'ai une valeur dans ddl mais la le probleme c'est qu'il la trouve pas et pourtant comme j'ai mentionné ci-haut je la voie tres bien en explorant les valeur de PAGE dans la fenetre espion.
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 20111 25 juin 2008 à 22:19
Merci de ton aide ....mais ca ressemble plus a un bug de asp.net ...tout devrais fonctionner comme tu vois ... je vais faire un test avec moins de ddl pour voir si c'est pas ca qui le fait "Bad tripper"
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 25 juin 2008 à 22:23
Pour faire plus concret, je donne un exemple qui marche (je viens de le tester) où se trouvent récupérés dans la boucle for des labels et des dropdownlist qui correspondent :
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ddl As DropDownList
Dim ddlc As String
For n As Integer = 47 To 50
ddlc = "dropdownlist" & n
Dim lbc As String = "Label" & n
ddl = CType(Page.FindControl(ddlc), DropDownList)
Dim lb As Label = CType(Page.FindControl(lbc), Label)
DoSave(ddl, lb)
Next
End Sub
Sub DoSave(ByVal ceci As Object, ByVal cela As Object)
cela.Text = ceci.selecteditem.text
End Sub
Si cela ne marche pas chez toi, je ne comprends pas pourquoi...
BrokenArrow29
Messages postés110Date d'inscriptionvendredi 1 décembre 2006StatutMembreDernière intervention14 décembre 20111 25 juin 2008 à 22:46
Ben voila,
ca ne marche pas plus...
je pense de plus en plus au nombre de dropdownlist ...(68 au total). ...est-ce ca le problème ????
Ma page fonctionne sous une masterPage ...est-ce ca le problème ?????
Je vais prendre un peu de recule et regarder tout de nouveau ...je comprend vraiment pas où est le probleme
Je reviens plus tard dans la soirée avec j'espère la solution!!!...(pour moi il est 16h44)