terça-feira, 9 de abril de 2013

DropDownList e Grid com LINQ


Recebi alguns emails questionando como trabalhar com DropDownList e GridView utilizando o Linq como fonte de dados.

Não tem muito segredo.

Veja o exemplo abaixo. 
Criei uma tabela em meu banco de dados com alguns campos.

Criei um arquivo no Visual Studio do tipo Linq to SQL, chamado de Banco.dbml e adicionei a tabela aluno.  Tenho um artigo escrito com maiores detalhes sobre o linq.

No arquivo Default.aspx adicionei o DropDownList:

<form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DDLalunos" runat="server" />
    </div>
</form>

Já no arquivo Default.aspx.cs eu indiquei como o controle será carregado:

BancoDataContext bd = new BancoDataContext();
DDLalunos.DataSource = (from c in bd.Alunos orderby c.nome select c).ToList();

DDLalunos.DataValueField = "id";
DDLalunos.DataTextField = "nome";

DDLalunos.DataBind();

Nesse exemplo eu estou listando os alunos ordenando por nome e atribuindo ao DataSource.
Feito isso será necessário indicar qual é apresentado ao usuário final e o campo que conterá o valor a ser enviado quando ocorrer o submit.

Neste caso eu estou dizendo que o valor a ser passado é a coluna ID e o valor apresentado para o usuário final é a coluna NOME.  

O DataBind é responsável por carregar essa informações indicadas anteriormente.
Ao executar, o resultado será como abaixo:


Eu posso indicar outra coluna para ser o valor apresentado ao usuário final:
BancoDataContext bd = new BancoDataContext();
DDLalunos.DataSource = (from c in bd.Alunos orderby c.nome select c).ToList();

DDLalunos.DataValueField = "id";
DDLalunos.DataTextField = "email";

DDLalunos.DataBind();


Veja o resultado:

No caso do GridView é a mesma coisa.

No arquivo Default.aspx eu adicionei a chamada o Grid

<form id="form1" runat="server">
    <div>
<asp:GridView ID="GDVAlunos" runat="server" AutoGenerateColumns="true" />
    </div>
</form>

No arquivo Default.aspx.cs indiquei qual é a fonte de dados e chamei o método DataBind();

GDVAlunos.DataSource = (from c in bd.Alunos orderby c.nome select c).ToList();
GDVAlunos.DataBind();

Veja o Resultado:





Nenhum comentário:

Postar um comentário