Pergunta

Eu estou usando C # .NET

Eu tenho um repetidor dentro de uma View (MultiView) cada linha contém um botão ‘Editar’ (armazenado no CommandArgument é a identificação de tipo).

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

Quando o usuário clica no botão ‘Editar’ que são tomadas através de outro ponto de vista (Edit View).

Dependendo de qual tipo Eval ( "ID") é selecionado um UserControl diferente deve ser visível.

Tenho notado que se postback ocorre no mesmo formulário (Edit View) ele perde o seu estado para o controle dinâmico. Portanto, eu acho que eu preciso de acesso / preencher o DIV (appViewArea) através do Page_Load.

Dentro do meu Page_Load eu só quero isso para preencher o DIV com o UserControl correta se o usuário acessou a Edit View. Aqui está o que eu tenho atualmente dentro do meu 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;
}

O meu problema é que nunca vai para o caso statament (_mutliview) e também não armazena o viewAppointmentID. Eu olhei ao redor da web, mas não consigo encontrar nada que realmente me ajuda. Estou acessando o caminho errado?

Agradecemos antecipadamente por qualquer ajuda.

Graças

Clare

Foi útil?

Solução 2

Eu adicionei este código em vez no meu evento de botão. Parece que funciona agora, então deve ser armazená-lo dentro do ViewState.

Outras dicas

Você não precisa do page_load mas o evento OnCommand da rede e, nesse caso, você verificar o commandname e / ou commandarguments

parece que você deve usar

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

e, no caso OnRowCommand você pode adicionar os usercontrols para a página

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top