ASP .NET Web Forms - GridView, SqlDataSource e DetailsView
Em meu artigo -
ASP.NET 2.0 - Os novos controles de acesso a dados
- apresentei os novos controles para acesso a dados do ASP.NET 2.0 e no
artigo ASP.NET
2.0 - GridView
mostrei como usar o controle de vinculação de
dados GridView; além do controle GridView temos outros
controles de vinculação de dados que foram introduzidos na nova versão do
ASP.NET; estou falando dos seguintes controles :
Se acompanhou os artigos anteriores você
percebeu como é fácil trabalhar com o componente GridView para exibir
informações de uma fonte de dados. Neste artigo irei introduzir o controle
DetailsView mostrando uma das formas de se utilizar o controle. A estrutura da aplicação será constituída basicamente de duas páginas:
|
Para acompanhar este artigo você vai precisar do Visual Studio (pode usar a versão 2005,2013 ou 2015) ou do Visual Web Developer (pode ser a versão 2005).
Ambos podem ser baixados gratuitamente no site da Microsoft. Neste artigo eu vou usar o Visual Web Developer (VWD) que você pode pegar aqui : http://msdn.microsoft.com/vstudio/express/vwd/.
1- Abra o VWD e crie um novo Web Site no Menu File -> New Web Site. Informe um nome sugestivo para o site.
A seguir clique com o botão direito na solução e selecione a opção Add New Item. Na janela Add New Item selecione o template WebForm informe o nome pagDgv1.aspx clique em Add.
Repita a operação e inclua um novo formulário Web com o nome de PagDetalhes.aspx.
A seguir selecione a página pagDgv1.aspx e inclua um componente GridView efetuando a configuração através do componente SqlDataSource para acessar o banco de dados Northwind e exibir os campos [LastName], [FirstName], e [City] da tabela Employees. O campo EmployeeID será usado como chave primária. (Ver figura abaixo)
O código gerado pelo assistente é mostrado abaixo:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="pagDgv1.aspx.vb" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Usando GridView, SqlDataSource e DetailsView</title> </head> <body> <form id="form1" runat="server"> <div> <span style="font-size: 32pt; color: #6600cc"><span style="font-family: Trebuchet MS"> Macoratti.net -<span style="font-size: 24pt"> </span></span><span style="font-size: 24pt; font-family: Trebuchet MS;"> Exibindo Detalhes<br /> </span></span> <hr> <asp:GridView Runat="server" Id="gvEmployees" DataSourceID="dbNorthwind" DataKeyNames="EmployeeID" AllowPaging="True" _ AutoGenerateColumns="False" Height="264px" Width="388px"> <Columns> <asp:BoundField DataField="FirstName" HeaderText="Nome" /> <asp:HyperLinkField DataTextField="Lastname" DataNavigateUrlFields="EmployeeID" DataNavigateUrlFormatString="pagDetalhes.aspx?id={0}" HeaderText="Clique aqui para detalhes" /> <asp:BoundField DataField="City" HeaderText="Cidade" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="dbNorthwind" runat="server" SelectCommand="SELECT [EmployeeID], [LastName], [FirstName], [City] FROM [Employees] Order by [city]" ConnectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;User ID=sa;password=;_ Data Source=MACORATI\VSDOTNET"> </asp:SqlDataSource> <br /> <asp:HyperLink ID="HyperLink1" runat="server" Font-Names="Trebuchet MS" NavigateUrl="http://www.macoratti.net"> _ www.macoratti.net -Tudo para .NET (quase...)</asp:HyperLink><br /> </div> </form> </body> </html> |
Agora abra a página pagDetalhes.aspx e inclua um controle DetailsView no formulário; Usando a Smart Tag , através da opção - Configure Data Source... - configura um novo DataSource com o nome de dbDetalhes para acessar a tabela Employees do banco de dados Northwind do MSDE.
Acompanhe o assistente e na janela Configure DataSource selecione a tabela Employees e selecione os campos que deseja exibir no controle DetailsView.
A aparência final do formulário deve ser algo parecido com a figura abaixo:
O código gerado pelo assistente é o seguinte:
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Detalhes</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DetailsView DataKeyNames="EmployeeID" DataSourceID="dbdetalhes" Headerstyle-Font-Size="12" Font-Names="Arial" Font-Size="10pt" HeaderText="Funcionários - Detalhes" AutoGenerateRows="False" ID="dvdetalhes" runat="server" Height="270px" Width="404px"> <Fields> <asp:BoundField DataField="EmployeeID" HeaderText="Código" ReadOnly="True" /> <asp:BoundField DataField="FirstName" HeaderText="Nome" /> <asp:BoundField DataField="LastName" HeaderText="Sobrenome" /> <asp:BoundField DataField="Address" HeaderText="Endereço" /> <asp:BoundField DataField="City" HeaderText="Cidade" /> <asp:BoundField DataField="Region" HeaderText="Região" /> <asp:BoundField DataField="PostalCode" HeaderText="Cep" /> <asp:BoundField DataField="Country" HeaderText="País" /> </Fields> <HeaderStyle Font-Size="12pt" /> </asp:DetailsView> <asp:SqlDataSource ConnectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;User ID=sa;password=;_ Data Source=MACORATI\VSDOTNET" ID="dbdetalhes" runat="server" SelectCommand="SELECT * FROM [Employees] WHERE ([EmployeeID] = @EmployeeID)"> <SelectParameters> <asp:QueryStringParameter Name="EmployeeID" QueryStringField="id" /> </SelectParameters> </asp:SqlDataSource> <br /> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="http://localhost:1727/gv1.aspx/pagDgv1.aspx" Font-Names=_ "Trebuchet MS">Retorna a página principal</asp:HyperLink></div> </form> </body> </html> |
Para testar a aplicação vamos usar o servidor do próprio VWD. Rode a aplicação e inicie o servidor.
Na figura abaixo temos um visão da tela inicial do startup do servidor (para cada máquina os dados de porta serão diferentes)
Ao rodar a aplicação será apresentado a página pagDgv1.aspx .
Quando clicarmos no link referente a um sobrenome o controle HyperlinkField (muito parecido com o componente HyperLinkColumn do DataGrid) esta configurado definindo o campo EmployeeID (chave primária) que será passado na url com o nome de id - "pagDetalhes.aspx?id={0}" - definida em DataNavigateurlFormatString.
<asp:HyperLinkField DataTextField="Lastname" DataNavigateUrlFields="EmployeeID" DataNavigateUrlFormatString="pagDetalhes.aspx?id={0}" HeaderText="Clique aqui para detalhes" /> |
A seguir a página de detalhes - pagDetalhes.aspx - exibindo os dados referente ao funcionário selecionado.
A página pagDetalhes.aspx , no controle SqlDataSource , definimos um QueryStringParameter para o SelectParameters que irá receber o valor de EmployeeID passado com o nome de id na página anterior.
A instrução SQL usa o comando Select para selecionar os funcionário com o código (EmployeeID) recebido com o id.
SelectCommand="SELECT * FROM [Employees] WHERE ([EmployeeID] = @EmployeeID)"> <SelectParameters> <asp:QueryStringParameter Name="EmployeeID" QueryStringField="id" /> </SelectParameters> |
Para retornar a página principal usamos o controle HyperLink.
Pegue o código das páginas aqui : detailsview.zip
Até mais ver ...
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: