|
<< Click to Display Table of Contents >> GridView - usando colunas de links |
![]() ![]()
|
Para fazer uma página com uma grid, que contém dados vindos de mySQL com links que permitam mostrar detalhes numa outra página passando por QueryString o id do registro:
Telas

Página de detalhes:

Default
GridView e criei um novo datasource para GridView e apontei o mySQL
Depois de adicionar 2 campos na grid (id e nome), eu crie 2 novos campos do tipo HiperLinkField
As propriedades preenchidas destes campos hiperlink estão no html
Default.aspx
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px"
CellPadding="3" DataSourceID="SqlDataSource1" GridLines="Vertical">
<AlternatingRowStyle BackColor="#DCDCDC" />
<Columns>
<asp:BoundField DataField="id" HeaderText="id" SortExpression="id">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="nome" HeaderText="nome" SortExpression="nome" />
<asp:HyperLinkField DataNavigateUrlFields="id"
DataNavigateUrlFormatString="Detalhes.aspx?id={0}" HeaderText="Detalhes"
Text="Clique aqui" />
<asp:HyperLinkField DataNavigateUrlFields="id,nome"
DataNavigateUrlFormatString="Detalhes.aspx?id={0}&nome={1}"
HeaderText="Detalhes 2" Text="Aqui" />
</Columns>
</asp:GridView>
</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testeConnectionString %>"
ProviderName="<%$ ConnectionStrings:testeConnectionString.ProviderName %>"
SelectCommand="SELECT id, nome FROM tabela order by nome"></asp:SqlDataSource>
</form>
Default.aspx.cs
Nada!
Detalhes
Coloquei um DetailsView, criei um datasource e na hora de montar um SQL (select * from tabela) eu crie um "WHERE" com parâmetro tipo QueryString.
(tive que editar depois dentro do html para tirar as [] que ele coloca pro SQLServer)
Arrastei o Default.aspx para cima da página para criar um link de retorno
Detalhes.aspx
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" ForeColor="Red" Text="Label"></asp:Label>
</div>
<asp:DetailsView ID="DetailsView1" runat="server" BackColor="White"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3"
DataSourceID="SqlDataSource1" GridLines="Vertical" Height="50px" Width="125px">
<AlternatingRowStyle BackColor="#DCDCDC" />
<EditRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<RowStyle BackColor="#EEEEEE" ForeColor="Black" />
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testeConnectionString %>"
ProviderName="<%$ ConnectionStrings:testeConnectionString.ProviderName %>"
SelectCommand="SELECT * FROM tabela WHERE (id = @id)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="id" QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</form>
<p>
<a href="Default.aspx">Default.aspx</a></p>
</body>
Detalhes.aspx.cs
using System;
public partial class Detalhes : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["nome"] != null)
Label1.Text = Request.QueryString["nome"].ToString();
}
}
Web.config
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
<connectionStrings>
<add name="conn" connectionString="server=localhost;User Id=root;Password=123456; Persist Security Info=True;database=teste"/>
<add name="testeConnectionString" connectionString="server=localhost;User Id=root;password=123456;database=teste;Persist Security Info=True" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>