2010-08-06 6 views
0

Lorsque l'événement itemcommand se déclenche après la plupart des événements init/load de page/contrôle, sinon tous. quel est le meilleur moyen de conserver les données de variable de session modifiées sur itemcomment (en ajoutant des éléments par exemple) afin que la page puisse réagir à la commande item en utilisant la session modifiée?Meilleure façon de conserver les variables de session sur la commande d'objet listview ASP.NET

+0

Seule la solution que je vois (et qui fonctionne) consiste à gérer toutes les fonctionnalités du prerender de la page. Apparaît au travail, mais impair la commande item ne se déclenche pas comme le font d'autres événements de contrôle. – Skowronek

+1

Pouvez-vous donner un exemple de ce que vous essayez de faire et de ce qui ne fonctionne pas pour vous? En général, vous devriez pouvoir modifier la session comme bon vous semble dans le gestionnaire itemcommand, mais comme la plupart des événements de page ont déjà été déclenchés, votre page ne reflétera aucun de ces changements jusqu'à la prochaine requête (qui n'est généralement pas ce que tu veux). –

+0

Le problème était que j'avais besoin d'un compteur pour mettre à jour sur la page après avoir cliqué sur un bouton dans la liste. J'étais capable d'accomplir en jetant la logique de mise à jour dans l'événement de prerender de page. – Skowronek

Répondre

0

Vous pouvez attraper le postback plus tôt dans le cycle de vie de la page:

// id of the control 
    string id = Request.Form["__EVENTTARGET"]; 

    if (!string.IsNullOrEmpty(id) && id.Contains("myControlId")) 
    { 
     string argument = Request.Form["__EVENTARGUMENT"]; 
     ... 
    } 

mais il est ni très élégant ni sûr. Je suivrais la suggestion de Skowronek: mettre plus de logique sur PreRender.

Questions connexes