Question

Je suis en utilisant c # .net

I ai un répéteur dans une vue (MultiView) chaque ligne contient un bouton « Modifier » (stocké sur le CommandArgument est l'ID de type).

<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/>

Lorsque l'utilisateur clique sur le bouton « Edit » ils sont pris par une autre vue (vue Edition).

En fonction de quel type Eval ( "ID") est choisi un autre UserControl doit être visible.

Je l'ai remarqué que si postback se produit sur la même forme (vue Edition) il perd son état pour le contrôle dynamique. Par conséquent, je pense que je dois accéder à / alimenter la DIV (appViewArea) via le Page_Load.

Dans mon Page_Load Je veux seulement pour remplir la DIV avec le UserControl correct si l'utilisateur a accédé à la vue Edition. 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 non plus le viewAppointmentID. Je l'ai regardé sur le web mais ne peut pas trouver quelque chose qui me aide vraiment. Suis-je y accéder dans le mauvais sens?

Merci d'avance pour toute aide.

Merci

Clare

Était-ce utile?

La solution 2

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

Autres conseils

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

il semble que vous devez utiliser

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top