2009-10-05 5 views
1

J'utilise C# .netCommandEventArgs d'accès dans PageLoad

J'ai un répéteur dans une vue (MultiView) chaque ligne contient un bouton « Modifier » (stocké sur le CommandArgument est l'ID de type). Lorsque l'utilisateur clique sur le bouton 'Editer', il passe à une autre vue (Vue d'édition).

Selon le type Eval ("ID") sélectionné, un UserControl différent doit être visible.

J'ai remarqué que si la publication se produit sur le même formulaire (vue d'édition), elle perd son état pour le contrôle dynamique. Par conséquent, je pense que j'ai besoin d'accéder/remplir le DIV (appViewArea) via le Page_Load.

Dans mon Page_Load, je veux seulement qu'il remplisse le DIV avec le bon UserControl si l'utilisateur a accédé à la vue d'édition. Voici ce que j'ai actuellement dans mon Page_Load.

if(_multiView1.ActiveViewIndex == 1) // This is the Edit View 
{ 
    int typeId = Convert.ToInt32(viewAppointmentID.Value); // viewAppointmentID is a hidden field which is created within the ButtonClick method. 

switch (typeId) 
{ 
    case 1: 
     { 
      var control = Page.LoadControl("~/editBirthAppointment.ascx"); 
      appViewArea.Controls.Add(control); 
     } 
     break; 
    case 2: 
     { 
      var control = Page.LoadControl("~/editDeathAppointment.ascx"); 
      appViewArea.Controls.Add(control); 
     } 
     break; 
} 
} 

protected void ButtonClick(object sender, CommandEventArgs e) 
{ 
    var viewAppointmentID = Convert.ToInt32(e.CommandArgument); 
    _multiView1.ActiveViewIndex = 1; 
} 

Mon problème est qu'il ne va jamais dans le cas statament (_mutliview) et il ne stocke pas aussi la viewAppointmentID. J'ai regardé autour du web mais je ne trouve rien qui m'aide vraiment. Est-ce que j'y accède de la mauvaise façon?

Merci d'avance pour toute aide.

Merci

Clare

Répondre

0

J'ai ajouté ce code à la place dans mon événement de bouton. Il semble fonctionner maintenant, il doit donc être stocké dans ViewState.

0

vous n'avez pas besoin page_load mais l'événement oncommand de la grille et dans ce cas, vérifiez le commandname et/ou commandarguments

il semble que vous devriez utiliser

if(!Page.IsPostback()) 
     // fill grid here 

et en cas onRowCommand vous pouvez ajouter les usercontrols à la page

+0

Je dois l'utiliser dans le Page_Load car le contrôle dynamique n'est pas stocké dans ViewState. – ClareBear

+0

vous pouvez l'ajouter à une session var avec la chose oncommand et y accéder dans la page_load? ou pouvez-vous nous donner plus de code –

Questions connexes