Domanda

Sono utilizzando C # .NET

Ho un ripetitore all'interno di una visualizzazione (MultiView) ogni riga contiene un pulsante ‘Modifica’ (memorizzato sul CommandArgument è l'ID del tipo).

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

Quando l'utente fa clic sul pulsante ‘Modifica’ vengono portati attraverso un'altra vista (Edit View).

A seconda che sia selezionato il tipo Eval ( "ID") un controllo utente diverso deve essere visibile.

Ho notato che se postback si verifica la stessa forma (Edit View) perde il suo stato per il controllo dinamico. Perciò io che ho bisogno di accedere a / popolare il DIV (appViewArea) tramite il Load.

Nel mio Page Load Voglio solo che per popolare il DIV con l'UserControl corretto se l'utente ha accesso al Modifica vista. Ecco quello che ho attualmente nel mio 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;
}

Il mio problema è che non va mai in se statament (_mutliview) e inoltre non memorizza il viewAppointmentID. Ho guardato in giro per il web, ma non riesco a trovare qualche cosa che davvero mi aiuta. Sto accedervi nel modo sbagliato?

Grazie in anticipo per qualsiasi aiuto.

Grazie

Clare

È stato utile?

Soluzione 2

Ho aggiunto questo codice invece nel mio caso il pulsante. Sembra funzionare ora così deve essere di riporlo all'interno del ViewState.

Altri suggerimenti

non è necessario il Page Load ma l'evento OnCommand dalla rete e in tal caso di controllare le CommandName e / o commandarguments

sembra che si dovrebbe usare

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

e nel caso onRowCommand è possibile aggiungere i controlli utente alla pagina

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top