GridView - usando colunas de links

<< Click to Display Table of Contents >>

Navigation:  ASP.NET > ASP Controls > GridView >

GridView - usando colunas de links

Previous pageReturn to chapter overviewNext page

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

 

gridview1

 

Página de detalhes:

 

gridview2

 

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}&amp;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>