Pregunta

Estoy usando C # .NET

Tengo un repetidor dentro de una vista (Multi) cada fila contiene un botón ‘Editar’ (almacenada en el CommandArgument es la identificación de tipo).

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

Cuando el usuario hace clic en el botón ‘Editar’ que se toman a través de otro punto de vista (vista de edición).

Dependiendo de qué tipo Eval ( "ID") se selecciona un control de usuario diferente debe ser visible.

Me he dado cuenta de que si se produce la devolución de datos en el mismo formulario (Vista de edición) que pierde su estado para el control dinámico. Por lo tanto creo que es necesario para acceder a / poblar el DIV (appViewArea) a través de la Load.

Dentro de mi Load Yo sólo quiero que pueblan el DIV con el control de usuario correcto si el usuario ha accedido a la vista de edición. Aquí es lo que tengo actualmente en mi 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;
}

Mi problema es que nunca entra en el caso de statament (_mutliview) y también no almacena la viewAppointmentID. He mirado en la web, pero no puedo encontrar nada que realmente me ayuda a salir. ¿Estoy acceder a él por el camino equivocado?

Gracias de antemano por cualquier ayuda.

Gracias

Clare

¿Fue útil?

Solución 2

He añadido este código en su lugar en mi evento de botón. Parece que funciona ahora lo que debe ser almacenarla dentro del ViewState.

Otros consejos

que no es necesario el Page_Load pero el evento bajo demanda de la red y en caso de que compruebe las CommandName y / o commandarguments

parece que se debe utilizar

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

y en el caso onRowCommand puede agregar los controles de usuario a la página

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top