RECUPERATION DE LA VALEUR D'UN CONTROLE PENDANT LE PAGE_LOAD

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010 - 22 août 2004 à 05:14
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010 - 31 août 2004 à 10:14
Comment récupérer le contenu d'un contrÎle (textBox, DropDownlist, etc...) pendant le Page_Load d'un postBack, Si ce contrÎle est situé dans le footer d'un datagrid? en effet, j'ai beau avoir essayé beaucoup de syntaxesv du genre :
CType(MonDataGrid.Footer.FindControl("MonControl"),TextBox), Ces syntaxes n'existant pas...
Quelqu'un peut me renseigner ?
NB Le viewstate ne marche pas car pageload est déclenché trop tot...

11 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
22 août 2004 à 11:29
normalement tu n'as qu'a faire moncontrol.text, mais si le le viewstate ne fonctionne pas alors ca ne marchera pas

tu peux donc faire comme ca :
request.form("Moncontrol")

@+

Cyril
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
26 août 2004 à 09:14
Bonjour,
Ces syntaxes n'ont pas l'air de marcher dans ma page...

Je continue à chercher
Merci
Gilles
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
26 août 2004 à 13:11
La casse n'etait pas bonne, c'est peut etre pour ca que ca ne marchait pas :

Request.Form("Moncontrol")

pour que ca marche, il faut que "MonControl" soit l'id client du Textbox

tu peux verifier cela en regardant le code HTML de la page generé, il te suffit de regarder le name se la balise

La question est elle en rapport avec celle ci ? http://www.aspfr.com/forum.v2.aspx?ID=279706

@+

Cyril
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
26 août 2004 à 15:37
Oui, C'est la même difficulté, dans la même page.
je vais essayer tout de suite
A+ Gilles
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Derniè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 :

page.findControl("PartGrid:_ctl" & (PartGrid.items.count+2) & ":tbNomComm")

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.

Bien vu et merci !
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Derniè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
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
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

@+

Cyril
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Derniè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
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
28 août 2004 à 18:46
au lieu de

sub page_load()
'du code
end sub

sub onitemcommand

end sub

tu pourrais faire

sub page_load()
if not page.ispostback
lecode
end if
end sub

sub onitemcommand
Lecode
end sub

sub Lecode()
'du code
end sub

je sais pas si ca te satisfait ou pas, j'ai lu ton message que vite fait

@+

Cyril
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
29 août 2004 à 08:59
J'ai pas bien saisi le truc, mais je vais y bosser Qd meme

Mon message précédent était trop long, je fais + court !
@=
Gilles
0
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
31 août 2004 à 10:14
Bon, j'ai pas bien compris ta solution, mais ça m'a mis sur la voie et j'ai trouvé, tout mache, Merci encore
@+
Gilles
0
Rejoignez-nous