CommandEventArgs di accesso all'interno PageLoad
-
19-09-2019 - |
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
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