RECUPERATION DE LA VALEUR D'UN CONTROLE PENDANT LE PAGE_LOAD
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010
-
22 août 2004 à 05:14
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010
-
31 août 2004 à 10:14
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 26 août 2004 à 17:45
Au poil !
Voila c'est fait: mon contrôle textBox avait l'ID: "tbNomComm" et était dans le footer d'un dataGrid appelé "PartGrid". En faisant "afficher la source, j'ai bien vu l'ID Client :
"PartGrid:_ctl5:tbNomComm"
J'y ai accédé depuis le Page_Load avec :
Dim MatextBox as textBox =Ctype(page.findControl("PartGrid:_ctl5:tbNomComm"), textBox)
Dim monstring as string=MatextBox.text
response.write(monstring )
et il trouve...Un petit pb assez facile à résoudre: comme cette textbox est dans un footer, le chiffre 5 contenu dans l'ID_Client est variable car j'ai un checkbox dans chaque ligne et il dépend donc du Nb d'enregistrements. Dans mon cas, j'ai écrit :
C'est déja une partie du pb qui s'évapore. Reste que je ne sais toujours pas créer un textbox depuis page_load dans mon footer
;mais ça viendra. Ce forum est super, j'essayerai de publier le code quand tout sera résolu.
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 26 août 2004 à 17:57
PS:
Request.form("PartGrid:_ctl" & (PartGrid.items.count+2) & ":tbNomComm") marche aussi bien.
Petite précision :
Request.form, request.form ou Request.Form marchent pareil, l'asp.Net a l'air de ne pas trop regarder la casse.
A+
Gilles
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 26 août 2004 à 18:08
en ce qui concerne la casse, asp.net n'a rien a voir la dedans, tout depend du langage que tu utilises, en vb.net pas de pb de case par contre en C# si
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 28 août 2004 à 16:38
Bonjour,
Ok pour la précieuse précision. La précision la plus précieuse encore fut celle qui m'a fait découvrir que l'ID_CLIENT n'es pas la même que celle que j'ai rentrée. Du coup j'ai répondu à ma question qui est encore sur le forum: "comment créer et récupérer le contenu de controles créés dynamiquement et situés dans le footer d'un dataGrid". Dans le footer, j'ai créé une tableCell avec une ID:
<footertemplate>
</footertemplate>
(----On peut peut-être prendre un container plus simple ?----)
De cette façon , depuis n'importe où, j'y fais appel avec:
Dim MonControl as TableCell= Ctype(page.findcontrol("PartGrid:_ctl" & (PartGrid.items.count + 2) & ":placeNom"),TableCell)
Mon DataGrid s'appelle "PartGrid" et l'ID_Client de la TableCell est : id="PartGrid__ctlX_placeNom" où X est variable mais facilement calculable.
ATTENTION : Ici il faut mettre "PartGrid:_ctlX:placeNom", je ne sais pas trop pourquoi, l'un est l'ID, l'autre le "Name".
UN BEMOL dans cette univers de satisfaction:
Je n'ai pas besoin de recréer mes controles dans le page_load si j'en ai récupéré les contenus. SAUF, en cas de mauvais remplissage, il faut que ces contrôles demeurent?avec leur contenu, pendant que j'affiche un message d'info.
Selon tes conseils avisés, j'ai accompagné mon test de remplissage (dans la sub OnItemCommand du datagrid) d'un variable booléenne par ex:
If TxtbNomAdd ="" or TxtbRgltAdd= "" then
Message.text="Remplissez le nom et le règlement SVP ! "
Session("CreaTest")=true 'les boites doivent revenir pour correction
exit sub
else
Session("CreaTest") =false'c'est bon elles peuvent disparaitre end if
---et envoi dans la base de données ---
Ce qui me permet de mettre dans le Page_load :
------------
elseif Page.IsPostBack andalso Ctype(Session("CreaTest"),Boolean) then
AjouterBoites(Nb,"")
-----------
Eh bien ça ne marche pas car la page se charge avant que ma procédure ne s'exécute(j'ai raison?) et que le Page_Load ne sait pas encore que la booléenne est passée à "true" !!
Si je refais un postback(bouton annuler par ex), paf revoilà les boites avec un métro de retard, et vides bien sûr !
Comment faire pour que le page_Load soit au courant avant ? Mettre la procédure à un autre moment que "OnItemCommand"? ?
Merci et A+
Gilles