ensuite dans le pré-rendu, il faut inscrire votre webcontrol dans la page comme control gérant le post-back. Cela se fait de cette manière :
Page.RegisterRequiresPostBack(this);
Ensuite dans le rendu, bien évidemment, quand vous construisez votre imput text, sa valeur doit être donnée par la propriété MaproprieteDeMonInput1 de votre webcontrol.
Frédéric Mélantois
a écrit dans le message de news:7e8101c4957b$2752a460$ Bonjour,
J'ai créé un controle qui genere du code html dont un certain nombre de input type text.
Comment faire pour que ces input soit intégrés ds le viewstate ?
Lors de mes controles de validation, s'il y a une erreur, (donc postback), toutes les valeurs saisies dans ces input sont effacées....
Si QQn a un tuyau, merci
Bonjour,
Il n'est pas nécessaire de gérer un viewstate si vous avez simplement des
Input type=text
Il vous suffit de connaître le nom des input renvoyés par le client, en
principe c'est vous qui le fixez.
Vous implémentez dans votre webcontrol l'interface IPostBackDataHandler
ensuite dans le pré-rendu, il faut inscrire votre webcontrol dans la page
comme control gérant le post-back. Cela se fait de cette manière :
Page.RegisterRequiresPostBack(this);
Ensuite dans le rendu, bien évidemment, quand vous construisez votre imput
text, sa valeur doit être donnée par la propriété MaproprieteDeMonInput1 de
votre webcontrol.
Frédéric Mélantois
<anonymous@discussions.microsoft.com> a écrit dans le message de
news:7e8101c4957b$2752a460$a301280a@phx.gbl...
Bonjour,
J'ai créé un controle qui genere du code html dont un
certain nombre de input type text.
Comment faire pour que ces input soit intégrés ds le
viewstate ?
Lors de mes controles de validation, s'il y a une erreur,
(donc postback), toutes les valeurs saisies dans ces
input sont effacées....
ensuite dans le pré-rendu, il faut inscrire votre webcontrol dans la page comme control gérant le post-back. Cela se fait de cette manière :
Page.RegisterRequiresPostBack(this);
Ensuite dans le rendu, bien évidemment, quand vous construisez votre imput text, sa valeur doit être donnée par la propriété MaproprieteDeMonInput1 de votre webcontrol.
Frédéric Mélantois
a écrit dans le message de news:7e8101c4957b$2752a460$ Bonjour,
J'ai créé un controle qui genere du code html dont un certain nombre de input type text.
Comment faire pour que ces input soit intégrés ds le viewstate ?
Lors de mes controles de validation, s'il y a une erreur, (donc postback), toutes les valeurs saisies dans ces input sont effacées....
Si QQn a un tuyau, merci
Voila un bout de code.... AfficheGrille() genere le code html, disp stocke tout dans la propriété _output puis render.
Protected Overrides Sub Render(ByVal Output As HtmlTextWriter)
AfficheGrille() Output.Write(_output)
End Sub
Private Function disp(ByVal txt As String) As String _output &= txt Return _output End Function
Il va vous falloir revoir votre manière de penser. 1) Votre fonction disp() ne sert à rien, utilisez directement le HtmlWriter : ça évite d'écrire du code inutile et en plus ça sera plus rapide 2) Mettez le code qui sert à générer le html dans la méthode Render() : ça ne sert à rien que Render() se contente de faire un appel à une unique fonction 3) La partie du code qui génère le html doit contenir le moins de html possible :)
Le 3) signifie que dans la plupart des cas vous n'avez pas à vous soucier du html, il faut se servir des contrôles déjà existant. Dans votre situation, vous devriez rajouter quelques HtmlInputText à la collection Control et ne pas substituer Render
Bref, un bon bouquin expliquant l'écriture de contrôles personnalisés vous serait surement profitable. Sinon, jetez aussi un oeil sur : http://www.dotnetjunkies.com/quickstart/aspplus/doc/webctrlauthoring.aspx http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpguide/html/cpcondevelopingwebformscontrols.asp
Enfin pour répondre à votre question initiale, vérifiez que vous attribuez bien toujours les mêmes ID à vos zones de texte d'une fois sur l'autre.
-- Zazar
Bonsoir,
Voila un bout de code....
AfficheGrille() genere le code html, disp stocke tout
dans la propriété _output puis render.
Protected Overrides Sub Render(ByVal Output As
HtmlTextWriter)
AfficheGrille()
Output.Write(_output)
End Sub
Private Function disp(ByVal txt As String) As
String
_output &= txt
Return _output
End Function
Il va vous falloir revoir votre manière de penser.
1) Votre fonction disp() ne sert à rien, utilisez directement le HtmlWriter
: ça évite d'écrire du code inutile et en plus ça sera plus rapide
2) Mettez le code qui sert à générer le html dans la méthode Render() : ça
ne sert à rien que Render() se contente de faire un appel à une unique
fonction
3) La partie du code qui génère le html doit contenir le moins de html
possible :)
Le 3) signifie que dans la plupart des cas vous n'avez pas à vous soucier du
html, il faut se servir des contrôles déjà existant. Dans votre situation,
vous devriez rajouter quelques HtmlInputText à la collection Control et ne
pas substituer Render
Bref, un bon bouquin expliquant l'écriture de contrôles personnalisés vous
serait surement profitable. Sinon, jetez aussi un oeil sur :
http://www.dotnetjunkies.com/quickstart/aspplus/doc/webctrlauthoring.aspx
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpguide/html/cpcondevelopingwebformscontrols.asp
Enfin pour répondre à votre question initiale, vérifiez que vous attribuez
bien toujours les mêmes ID à vos zones de texte d'une fois sur l'autre.
Il va vous falloir revoir votre manière de penser. 1) Votre fonction disp() ne sert à rien, utilisez directement le HtmlWriter : ça évite d'écrire du code inutile et en plus ça sera plus rapide 2) Mettez le code qui sert à générer le html dans la méthode Render() : ça ne sert à rien que Render() se contente de faire un appel à une unique fonction 3) La partie du code qui génère le html doit contenir le moins de html possible :)
Le 3) signifie que dans la plupart des cas vous n'avez pas à vous soucier du html, il faut se servir des contrôles déjà existant. Dans votre situation, vous devriez rajouter quelques HtmlInputText à la collection Control et ne pas substituer Render
Bref, un bon bouquin expliquant l'écriture de contrôles personnalisés vous serait surement profitable. Sinon, jetez aussi un oeil sur : http://www.dotnetjunkies.com/quickstart/aspplus/doc/webctrlauthoring.aspx http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpguide/html/cpcondevelopingwebformscontrols.asp
Enfin pour répondre à votre question initiale, vérifiez que vous attribuez bien toujours les mêmes ID à vos zones de texte d'une fois sur l'autre.