GridView - ItemType (4.5+)

<< Click to Display Table of Contents >>

Navigation:  ASP.NET > ASP Controls > GridView >

GridView - ItemType (4.5+)

Previous pageReturn to chapter overviewNext page

A partir da versão 4.5 do ASP.NET existe uma nova propriedade para GridView chamada ItemType.

Ela permite otimizar o aceso a dados para não precisar usar o Eval() ou Bind().

 

PRIMEIRO EXEMPLO - Usando uma List

 

Default.aspx

 

gridview-listitem

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<html>

<head runat="server">

    <title>Titulo</title>

    <style>

        .direita {

            text-alignright;

        }

 

        .centro {

            text-aligncenter;

        }

    </style>

</head>

<body>

    <form id="form1" runat="server">

        <asp:GridView ID="Grid" runat="server" AutoGenerateColumns="false" ItemType="Pessoa">

            <Columns>

                <asp:BoundField DataField="Id" HeaderText="Código" />

                <asp:TemplateField HeaderText="Nome">

                    <ItemTemplate>

                        <asp:HyperLink ID="lnkEditar" runat="server"><%#:Item.Nome%></asp:HyperLink>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField HeaderText="Salário">

                    <ItemTemplate>

                        <div class="direita">

                            <asp:HyperLink ID="lnkEditar" runat="server"><%#:Item.Salario.ToString("#,##0.00")%></asp:HyperLink>

                        </div>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField HeaderText="Data">

                    <ItemTemplate>

                        <div class="centro">

                            <asp:HyperLink ID="lnkEditar" runat="server"><%#:Item.Nasc.ToString("dd-MMM-yyyy")%></asp:HyperLink>

                        </div>

                    </ItemTemplate>

                </asp:TemplateField>

            </Columns>

        </asp:GridView>

    </form>

</body>

</html>

 

Pessoa.cs - Fonte de dados

 

using System;

using System.Collections.Generic;

 

public class Pessoa

{

    public int Id { getset; }

    public string Nome { getset; }

    public decimal Salario { getset; }

    public DateTime Nasc { getset; }

 

    public static Pessoa Nova(int aId, string aNome, decimal aSalario, DateTime aNasc)

    {

        Pessoa p = new Pessoa();

        p.Id = aId;

        p.Nome = aNome;

        p.Salario = aSalario;

        p.Nasc = aNasc;

        return p;

    }

 

    public static List<Pessoa> Get()

    {

        List<Pessoa> lista = new List<Pessoa>();

 

        lista.Add(Nova(1, "Junior", (decimal)1000.50, new DateTime(1977, 1, 1)));

        lista.Add(Nova(2, "Flavio", (decimal) 10.00, new DateTime(1978, 2, 10)));

        lista.Add(Nova(3, "Mario", (decimal) 1.99, new DateTime(1985, 3, 21)));

        lista.Add(Nova(4, "Luidi", (decimal) 2.10, new DateTime(1986, 4, 30)));

        lista.Add(Nova(5, "Peach", (decimal) 34.12, new DateTime(1990, 5, 2)));

        lista.Add(Nova(6, "Toad", (decimal) 1101.22, new DateTime(2000, 6, 12)));

        lista.Add(Nova(7, "Rosalina", (decimal) 10.14, new DateTime(2010, 7, 21)));

        lista.Add(Nova(8, "Inara", (decimal) 45.89, new DateTime(1810, 8, 29)));

        lista.Add(Nova(9, "Kaylee", (decimal) 22.88, new DateTime(2005, 9, 2)));

        lista.Add(Nova(10, "Mal", (decimal) 10.50, new DateTime(2006, 10, 3)));

        lista.Add(Nova(11, "Jayne", (decimal) 50.67, new DateTime(2090, 11, 14)));

        lista.Add(Nova(12, "River", (decimal) 45.44, new DateTime(2010, 12, 22)));

        lista.Add(Nova(13, "Wash", (decimal) 23.00, new DateTime(2202, 1, 24)));

        lista.Add(Nova(14, "Zoe", (decimal) 1.10, new DateTime(1950, 2, 25)));

        lista.Add(Nova(15, "Simon", (decimal) 12.01, new DateTime(1980, 3, 30)));

        lista.Add(Nova(16, "Book", (decimal) 1123.02, new DateTime(1990, 4, 11)));

        lista.Add(Nova(17, "Universe", (decimal) 543.22, new DateTime(1960, 5, 10)));

        lista.Add(Nova(18, "Zambo", (decimal) 23.04, new DateTime(1956, 6, 9)));

        lista.Add(Nova(19, "Ana", (decimal) 100.05, new DateTime(1999, 7, 8)));

 

        return lista;

    }

}

 

 

Default.cs Programa

 

using System;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        Grid.DataSource = Pessoa.Get();

        Grid.DataBind();

    }

}

 

 

SEGUNDO EXEMPLO - Usando uma DataTable

 

Default.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<html>

<head runat="server">

    <title>Titulo</title>

    <style>

        .direita {

            text-alignright;

        }

 

        .centro {

            text-aligncenter;

        }

    </style>

</head>

<body>

    <form id="form1" runat="server">

        <asp:GridView ID="Grid" runat="server" AutoGenerateColumns="false" ItemType="System.Data.DataRowView">

            <Columns>

                <asp:BoundField DataField="Codigo" HeaderText="Código" />

                <asp:TemplateField HeaderText="Nome">

                    <ItemTemplate>

                        <asp:HyperLink ID="lnkEditar" runat="server"><%#:Item["Nome"]%></asp:HyperLink>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField HeaderText="Salário">

                    <ItemTemplate>

                        <div class="direita">

                            <asp:HyperLink ID="lnkEditar" runat="server"><%#:Decimal.Parse(Item["Salario"].ToString()).ToString("#,##0.00")%></asp:HyperLink>

                        </div>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField HeaderText="Data">

                    <ItemTemplate>

                        <div class="centro">

                            <asp:HyperLink ID="lnkEditar" runat="server"><%#:DateTime.Parse(Item.Row["Nasc"].ToString()).ToString("dd-MMM-yy")%></asp:HyperLink>

                        </div>

                    </ItemTemplate>

                </asp:TemplateField>

            </Columns>

        </asp:GridView>

    </form>

</body>

</html>

 

 

Pessoas.cs - Fonte de dados

 

using System;

using System.Data;

 

public class Pessoas

{

    private DataTable Dados;

 

    private void Nova(int aId, string aNome, decimal aSalario, DateTime aNasc)

    {

        DataRow dr = Dados.NewRow();

        dr["Codigo"] = aId;

        dr["Nome"] = aNome;

        dr["Salario"] = aSalario;

        dr["Nasc"] = aNasc;

        Dados.Rows.Add(dr);

    }

 

    public Pessoas()

    {

        Dados = new DataTable();

        Dados.Columns.Add(new DataColumn("Codigo"typeof(System.Int32)));

        Dados.Columns.Add(new DataColumn("Nome"typeof(System.String)));

        Dados.Columns.Add(new DataColumn("Salario"typeof(System.Decimal)));

        Dados.Columns.Add(new DataColumn("Nasc"typeof(System.DateTime)));

 

        Nova(1, "Junior", (decimal)1000.50, new DateTime(1977, 1, 1));

        Nova(2, "Flavio", (decimal)10.00, new DateTime(1978, 2, 10));

        Nova(3, "Mario", (decimal)1.99, new DateTime(1985, 3, 21));

        Nova(4, "Luidi", (decimal)2.10, new DateTime(1986, 4, 30));

        Nova(5, "Peach", (decimal)34.12, new DateTime(1990, 5, 2));

        Nova(6, "Toad", (decimal)1101.22, new DateTime(2000, 6, 12));

        Nova(7, "Rosalina", (decimal)10.14, new DateTime(2010, 7, 21));

        Nova(8, "Inara", (decimal)45.89, new DateTime(1810, 8, 29));

        Nova(9, "Kaylee", (decimal)22.88, new DateTime(2005, 9, 2));

        Nova(10, "Mal", (decimal)10.50, new DateTime(2006, 10, 3));

        Nova(11, "Jayne", (decimal)50.67, new DateTime(2090, 11, 14));

        Nova(12, "River", (decimal)45.44, new DateTime(2010, 12, 22));

        Nova(13, "Wash", (decimal)23.00, new DateTime(2202, 1, 24));

        Nova(14, "Zoe", (decimal)1.10, new DateTime(1950, 2, 25));

        Nova(15, "Simon", (decimal)12.01, new DateTime(1980, 3, 30));

        Nova(16, "Book", (decimal)1123.02, new DateTime(1990, 4, 11));

        Nova(17, "Universe", (decimal)543.22, new DateTime(1960, 5, 10));

        Nova(18, "Zambo", (decimal)23.04, new DateTime(1956, 6, 9));

        Nova(19, "Ana", (decimal)100.05, new DateTime(1999, 7, 8));

    }

 

    public DataTable Listar()

    {

        return Dados;

    }

}

 

Default.cs Programa

 

using System;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            Pessoas p = new Pessoas();

            Grid.DataSource = p.Listar();

            Grid.DataBind();

        }

    }

}