<< Click to Display Table of Contents >> GridView - ItemType (4.5+) |
![]() ![]() ![]() |
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().
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html>
<head runat="server">
<title>Titulo</title>
<style>
.direita {
text-align: right;
}
.centro {
text-align: center;
}
</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 { get; set; }
public string Nome { get; set; }
public decimal Salario { get; set; }
public DateTime Nasc { get; set; }
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();
}
}
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html>
<head runat="server">
<title>Titulo</title>
<style>
.direita {
text-align: right;
}
.centro {
text-align: center;
}
</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();
}
}
}