[PB]: PageIndexChanged sans ViewStat

Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008 - 21 août 2006 à 15:58
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 23 août 2006 à 00:26
Salut à tous,


J'aurais une petite question à vous poser. Voilà je suis en train de créer un ControlWebPersonnalisé et j'aurais besoin d'un renseignement. Donc ma classe hérite de WebControl, ensuite je lui affecte un premier controle qui est une dropdownlist et ensuite un datagrid.


On m'a dit de mettre la propriété du datagrid, "EnableViewStat" à false.


Du coup pour gérer le tri des colonnes je passe pas des champs cachés. Ensuite j'ai activé la pagination. Je le fais en mode numérique.


Mon souci c'est que lorsque je change le nombre de ligne via ma dropdownlist, l'évènement pageindexchanged n'est plus effectué. Et si je reviens au même nombre de ligne qu'au départ, j'accède à l'évènement et du coup je peux le traité.


Et dc tout ça c'est dans le cas que je mets mon enableviewstat à False, sinon ça marche parfaitement. Mais on me demande de le faire sans le viewstat. :(


Je sais pas si j'ai été assez clair :). Donc si vous voulez vous pencher sur mon cas :) je pourrais vous donner plus de détail.


Merci @+




Manu

5 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 2006 à 22:37
Je te proposerais bien une méthode crade en surchargeant la méthode SaveViewState de l'objet page mais comme son nom l'indique c'est crade : http://msdn.microsoft.com/msdnmag/issues/03/02/CuttingEdge/ 

En tout cas ce qui t'arrive et tout à fait normal, reste à savoir pourquoi tu n'as pas le droit d'utiliser le viewstate. Avant asp.net on utilisait des champs caché pour faire ce genre de chose, maintenant on utilise le viewstate qui est plus propre et simple. Il ne faut pas utiliser le viewstate de partout mais un peu de viewstate est nécessaire. pour ce genre de chose. si vraiment tu n'as pas le droit d'utiliser le viewstate il faudra reconstruire ton dropdownlist pendant le init de la page et normalement ca devrait fonctionner :-)

<hr />Cyril - MVS - MCP
0
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008
22 août 2006 à 22:46
Bah en fait c'est qu'il va stocker tout le datagrid dans le viewstate.


Pour la dropdownlist, j'ai activé le viewstate, il n'y a que pour le datagrid que je le desactive. Mais pour mon problème c'est que l'evenement n'est pas effectué si je desactive le viewstate. En fait il passe que si le nombre de ligne selectionné dans la dropdownlist est egale à celui du départ.


Sinon j'ai trouvé une solution :), en réinventer la pagination :). Je suis en train de faire des linkbutton pour gérer la pagination. Et ça à l'air de marcher. Encore des petits bugs mais je vais réusir :).


Mais je voulais savoir comment ça gérait l'evènement au sein du viewstate ?


@+

Manu
0
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 2006 à 23:01
ah, oui il faut gérer soit même la pagination

je ne comprend "gérait l'evenement au sein du viewstate" ?

<hr />Cyril - MVS - MCP
0
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008
22 août 2006 à 23:05
Bah en fait c'est que je comprends pas pourquoi l'évènement est effectué lorsque le nb ligne par page est egal au nb ligne par page par defaut. Le viewstat est desactivé pour le datagrid. Et donc je me posais la question si l'évènement était stocké dans le viewstate ??




Manu
0

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

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 août 2006 à 00:26
Oui et non. Un event c'est pas une valeur donc il peut pas etre stocké ;-)


Par contre pour qu'il soit déclenché il lui faut plusieurs informations, tout d'abord il lui faut les données qui ont été envoyé a la page lors de la derniere requete, pour récuperer ces données il passe par le viewstate qui va recréer la collection d'items du dropdownlist. puis il regarde la valeur retourné dans une variable post (__EVENTARGUMENT et __EVENTTARGET) et si la valeur récuperer via les variable post et différent de la valeur selectionné lors de la derniere requete alors il lance l'evenement.

En gros c'est comme ca que ca se passe. Bien sur en réalité c'est "un peu" plus complexe :D





<hr />

Cyril - MVS - MCP
0
Rejoignez-nous