ASP.NET/C#: Como recuperar os dados que foram associados ao DataSource de um ListBoundControl

asp-netOlá pessoal, tudo bom?

Caso você tenha dados que já foram atribuídos ao DataSource de um determinado ListBoundControl, (GridView, DataList, DropDownList, etc) e precise recuperá-los, para por exemplo, realizar um novo filtro/pesquisa sobre os mesmos, uma maneira simples é realizar o cast dos dados ligados ao DataSource para uma lista de objetos do tipo dos que foram originalmente associados a ele.

Repare no exemplo a seguir que temos um DataList chamado dlProdutos e que ao mesmo foi associada uma lista de objetos de uma classe chamada Produto. A intenção do exemplo é que possamos recuperar os dados do DataList e montar uma consulta LINQ realizando um novo filtro sem necessidade de uma nova consulta no Banco de Dados.


protected void btnProcurar_Click(object sender, EventArgs e)
{
  ...
  ...
  List<Produto> dados = dlProdutos.DataSource as List<Produto>;
  ...
  dlProdutos.DataSource = (from p in dados
             where p.Nome.Contains(txtPalavraChave.Text)
             select p).ToList();
  dlProdutos.DataBind();
  ...
}

Espero ter ajudado!

Grande abraço,
Eduardo Henrique Rizo

Coordenador de Internet da Universidade do Oeste Paulista (Unoeste) e professor universitário de disciplinas relacionadas ao desenvolvimento de sistemas para Web, gerenciamento de servidores, serviços e redes.

Marcado com: , , , , , , , , , , , , , , ,
Publicado em ASP.NET, Desenvolvimento Web, Entity Framework, LINQ
2 comentários em “ASP.NET/C#: Como recuperar os dados que foram associados ao DataSource de um ListBoundControl
  1. celso jacinto(Cj) disse:

    pessoal eu gostaria de saber como faço pra nao perder os dados da base de dados sempre que o pc reinicia me esquece de dizer que é em c#

Deixe um comentário

Sorocaba e Região
Prestadora de serviços RIZZO GS - Sorocaba/SP

Serviços de limpeza, conservação, recepção, copa, portaria, vigia, zeladoria, jardim, elétrica, hidráulica, pintura, etc.

Contato: (15) 3357-4263 / (15) 3357-4502 - contato@rizzogs.com.br

Website: http://www.rizzogs.com.br