Sou um apaixonado por produtividade e inovação. Sempre procuro novas tecnologias, maneiras diferente de fazer a mesma coisa, no entando, isso sempre toma muito tempo este é o motivo de manter este blog. Compartilhar algumas dicas, truques sobre o que adoro fazer.

Há tempos utilizo LinqToSql e acredito que todos os componentes que fazem mapeamento relacional como LinqToSql, EntityFramework, Hibernate, JPA e etc, fazem com que o desenvolvimento reduza pela metade do tempo, desde que, saiba exatamente como usar o framework, neste caso a curva de aprendizado será grande, excepcionalmente se você não for um Nerd que dedica horas da sua vida à pesquisar coisas que talvez nunca use. :)

Você pode utilizar um LinqDataSource como fonte de dados para GridView, FormView, DetailsView.

Para isso você deverá criar um Contexto para o LinqToSql (existem diversos tutoriais na internet, por ser bastante básico, não vou entrar em detalhes por não ser o foco do post).

Criado o Contexto você inclui o objeto LinqDataSource, neste exemplo, simulo um objeto Contexto (dbDataContex) Ordenando por “Nome”, utilizo um objeto anônio (Anonymous Types), em TableName, informo qual a classe (Entidade) que contem o Mapeamente Relacional gerado pelo LinqToSql, por fim vinculamos o evento (linqDsClientes_Selected) que será utilizado na seleção de um item no GridView.

<asp:LinqDataSource ID="linqDsClientes" runat="server"  
ContextTypeName="dbDataContext" OrderBy="Nome"
Select="new (IDCliente, Nome, Email, DataNascimento)"
TableName="ClienteEntidades" onselected="linqDsClientes_Selected">
</asp:LinqDataSource>

Com objeto criado, vamos associar ao gridview, para isso basta na propriedade DataSourceID, informar o ID do objeto LinqDataSource.

<asp:GridView ID="GridView1" runat="server" DataSourceID="linqDsClientes" />
<!--Label que informará quantos registros foram encontrados -->
<asp:Label ID="lblQtdade" runat="server" />

Pronto, assim, já temos vinculado a grid com o controle, agora, vamos manipular as informações.

Para filtrar informações no LinqDataSource (WhereParameters).

linqDsClientes.WhereParameters.Clear(); //Limpa possíveis parâmetros
linqDsClientes.Where = "Nome.Contains(@Nome)"; // Procuro na propriedade Nome o texto que contenha o parâmetro passado
linqDsClientes.WhereParameters.Add("Nome", System.Data.DbType.String, txtNome.Text); // Adiciono os parâmetros.

Agora uma coisa bem simples, que demorei um tempão para descobrir é o count(), que pode ser feito através do Evento OnSelected.

protected void linqDsClientes_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
lblResultado.Text = string.Format("Total de clientes encontrados: {0}", e.TotalRowCount);
}

Certamente ainda há muito o que ser pesquisado sobre este objeto, mas, foi uma pequena contribuição…

Mande sugestão ou dúvida para contato@alexandreminato.com.br

Até a próxima 8-)