domingo, 4 de maio de 2008

Mostrando dados com o GridView e Orientação a Objetos

Neste post iremos preencher uma GridView com uma fonte de dados que é uma lista de fornecedores. Para isso criaremos um novo site, adicionaremos a pasta ASP.NET App_Code, nesta adicionaremos as classes Fornecedor e a FonteDadosFornecedor, conforme imagem 1


Imagem 1 – Solution Explorer da solução

Escrevemos o código do Fornecedor conforme Código 1, este código é compatível com o ASP.NET 3.5, para ver o código compatível com o ASP.NET 2.0 veja o Código 2:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

public class Fornecedor
{

public Fornecedor(int codigo, string nome, string site)
{

this.Codigo = codigo;
this.Nome = nome;
this.Site = site;
}

public int Codigo { get; set; }
public string Nome { get; set; }
public string Site { get; set; }
}

Código 1 – Fornecedor.cs (ASP.NET 3.5)


using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

public class Fornecedor
{


private int _Codigo;
private string _Nome;
private string _Site;

public Fornecedor(int codigo, string nome, string site)
{

this.Codigo = codigo;
this.Nome = nome;
this.Site = site;
}

public int Codigo
{
get { return _Codigo; }
set { _Codigo = value; }
}

public string Nome
{
get { return _Nome;}
set { _Nome = value; }
}

public string Site
{
get { return _Site;}
set { _Site = value;}
}

}

Código 2 - Fornecedor.cs (ASP.NET 2.0)

Escrevemos o código do FonteDadosFonrcedor conforme Código 3:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Collections.Generic;

public class FonteDadosFornecedor
{

public List<Fornecedor> RetornaFornecedores()
{

List<Fornecedor> result = new List<Fornecedor>();
result.Add(
new Fornecedor(0, "Microsoft", "http://www.microsoft.com"));
result.Add(
new Fornecedor(1, "Google", "http://www.google.com"));
result.Add(
new Fornecedor(2, "Oracle", "http://www.oracle.com"));
return result;
}
}

Código 3 – FonteDadosFornecedor

Criamos ou renomearemos uma página existente para GridView.aspx. Para garantir que esta página seja a que será executada ao iniciar a aplicação, clique com o botão direito nesta página e vá na opção “Set as Start Page”, conforme Imagem 2.



Imagem 2 – Set as Start Page

Adicione um GridView ao GridView.aspx, e nas tarefas no GridView na parte “Choose Data Source”, selecione a opção “New Data Source” para definirmos O FonteDadosFornecedor como nossa fonte de dados, conforme imagem 3.


Imagem 3 – Tarefas do GridView

No wizard que será aberto selecione o tipo de dados ObjectDataSource e defina o ID como odsFornecedor conforme Imagem 4 e clique em OK.

Imagem 4 - Definindo o ObjectDataSource como fonte de dados

No próximo passo, selecione nosso objeto de negócio o FonteDadosFornecedor, conforme Imagem 5 e clique em Next.

Imagem 5 – Definindo o Objeto de negócio

Selecione o método de dados para o SELECT, conforme Imagem 6 e clique em Finish.

Imagem 6 - Definindo o Método SELECT

O GridView já identifica quais as colunas são mostradas, vamos agora customizar a coluna Site para ser um HiperLink, nas tarefas do GridView, selecione a opção Edit Columns, conforme Imagem 7.

Imagem 7 – Selecionando a opção Edit Columns

Adicione uma nova coluna do tipo HyperLinkField e defina as propriedades com os seguintes valores:

  • HeaderText: Site
    Define o texto do cabeçalho

  • Target : _blank
    Define que o link será aberto em uma nova janela

  • DataNavigateUrlFields: Site
    Define o campo que será usado na montagem da URL

  • DataNavigateUrlFormatString: {0}
    Define a string de URL, onde {Indice} é substituído pelo campo de indice do DataNavigateUrlFields

  • DataTextField
    Campo a ser mostrado no GridView

Depois exclua a coluna Site existente previamente. O Resultado fica conforme Imagem 8.

Imagem 8 - Configurado o HyperLinkField

Execute o site e veja o resultado gerado. Observe o HTML gerado e a abstração que isto nos deu do HTML.

Referências:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx