Olá! Quarta Feira, 07 de Janeiro de 2009.


Dicas CódigoFonte.net
Quarta Feira, 17 de Setembro de 2008

Armazenando e Recuperando uma List do ViewState

Pessoal, como andam os grandes projetos? eheheh

Então, hoje surgiu um problema quando estava implementando um UserControl em ASP.Net. Neste UserControl, eu criava um objeto do tipo List<> e armazenava ele no ViewState. Porém, na recuperação deste objeto, o framework acusava uma excessão, dizendo que não era possível converter o objeto genérico para um outro objeto genérico.

Procurando pelo mesmo problema no Google, encontrei uma solução que permite tal procedimento. Segue explicação:

Vamos imaginar que temos uma página Web que simula a criação da lista genérica e logo depois recuperamos esta lista. Veja que você pode implementar este exemplo da forma que desejar, criando a sua lista no Page_Load e recuperando-a em um evento de um botão, por exemplo.

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Ilustração da criação de uma Lista que contém objetos Customer
        List<Customer> CustomerList = new List<Customer>();
        Customer SingleCustomer = new Customer();
        SingleCustomer.CustomerAddress = "my address";
        SingleCustomer.CustomerName = "my name";
        CustomerList.Add(SingleCustomer);

        // Converta a lista para um array e salve no ViewState
        // ao invés de serializá-la manualmente
        ViewState.Add("Customers", CustomerList.ToArray());
        Customer[] newArray = (Customer[])ViewState["Customers"];

        List<Customer> newList = new List<Customer>(newArray);
        Response.Write(CustomerList[0].CustomerName);
    }

    // Classe do objeto Customer que deve ser serializada    
    [Serializable]
    public class Customer
    {
        private string _CustomerName = "";
        private string _CustomerAddress = "";
 
        public string CustomerName
        {
            get
            {
                return _CustomerName;
            }
            set
            {
                _CustomerName = value;
            }
        }

        public string CustomerAddress
        {
            get
            {
                return _CustomerAddress;
            }
            set
            {
                _CustomerAddress = value;
            }
        }
    }
}

Pronto. Agora é só testar e ver que nossa List foi salva no ViewState e pode ser usada normalmente.

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login

Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:




Melhor Visualizado com
800x600 de Resolução

CodigoFonte.net » CodigoFonte.eti.br » Procurando o que comprar? » MeuMural.com.br » Todos os Direitos Reservados © 2002/2008

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com