domingo, 4 de maio de 2008
Indo para o xUnit.net
Para quem já conhece teste unitário e possivelmente conhece alguma framework como o NUnit. Em 23 de abril deste ano saiu a versão xUnit.net 1.0 RTM(Release To Market). Para quem quiser migrar, esta página faz um comparativo dos diferentes atributos e asserções (Attributes, Assertions):
http://www.codeplex.com/xunit/Wiki/View.aspx?title=Comparisons&referringTitle=Home
O Nunit já tem 5 anos de idade e tem seus padrões bem e mal sucedidos, este link explica o porquê de ter sido criado o xUnit.net, outra plataforma para testes unitários:
http://www.codeplex.com/xunit/Wiki/View.aspx?title=WhyDidWeBuildXunit&referringTitle=Home
Post sobre a alteração para xUnit.net do MoQ:
http://www.clariusconsulting.net/blogs/kzu/archive/2008/04/22/MoQnowusesxUnitforitsunittests.aspx
Veja o site do xUnit.net:
http://www.codeplex.com/xunit
sábado, 3 de maio de 2008
Trabalhando com dados - GridView
Quando trabalhamos com fontes de dados, há disponível pelo ASP.NET alguns controles para nos auxiliar, como o GridView, o DataList, o DetailsView, FormView e o Repeater. O ASP.NET 3.5 ainda trouxe dois novos controles: ListView e o Repeater.
Os controles são basicamente divididos para exibições de vários registros: GridView, DataList, Repeater e ListView. E exibição de um registro, que é possível usando o DetailsView ou o FormView.
Neste momento vamos falar o GridView, que foi introduzido no ASP.NET 2.0 e substitui o antigo DataGrid. O GridView mostra dados de uma fonte de dados de maneira tabular, onde cada linha do GridView representa uma linha da fonte de dado. O GridView ainda possúi:
Ordenação
Atualização e exclusão
Paginação
Seleção de linha
Multiplas chaves
Multiplos campos de dados para hiperlinks
Cutomização de aparencia através de temas(themes) e estilos(styles)
Cada coluna do GridView representa um atributo do registro, no caso do DataTable, um DataColumn. Cada coluna do GridView é uma classe que descende de DataControlField, e as opções são:
| Tipo de Coluna | Descrição |
| BoundField | Mostra o valor de um campo como texto |
| ButtonField | Mostra um botão de controle |
| CheckBoxField | Mostra um CheckBox |
| CommandField | Mostra um botão de comando para editar, inserir ou excluir |
| HyperLinkField | Mostra um texto como hiperlink |
| ImageField | Mostra uma imagem |
| TemplateField | Mostra um conteúdo de acordo com um modelo(Template) do usuário |
O GridView ainda tem a propriedade AutoGenerateColumns, que se habilitadade gera automaticamente colunas para o GridView.
Mostrando Dados com o GridView
Podemos fazer bind o GridView com dados através de controles DataSources(SqlDataSource, XMLDataSource, LinqDataSource) ou com qualquer fonte de dados que implemente a interface System.Collections.IEnumerable.
Para fazer bind com controles DataSource deve-se definir a propriedade DataSourceID do GridView com o ID do controle DataSource. Este é preferível em relação ao debaixo, pois provê automaticamente ações como ordenação, atualização, exclusão e paginação.
Para fazer bind com controles que implementam a interface System.Collections.IEnumerable, deve-se através de programação definir a propriedade DataSource e chamar o método DataBind.
Customizando Interface com o Usuário
De maneira mais genérica, podemos customizar a aparência do GridView utilizando Thema e skin. O que permite uma padronização de interface da aplicação Web. Mas podemos também customizar definindo propriedades de estilo de diferentes partes do controle:
| Propriedade | Descrição |
| AlternatingRowStyle | Define o estilo para as linhas alternadas no controle GridView. Quando esta propriedade é definida as linhas do GridView alternam estilos entre RowStyle e AlternatingRowStyle. |
| EditRowStyle | Define o estilo da linha que está sendo editada no GridView. |
| EmptyDataRowStyle | Define o estilo das linhas em branco mostradas no GridView, quando a fonte de dados não tem nenhum registro. |
| FooterStyle | Define o estilo para a linha rodapé do GridView. |
| HeaderStyle | Define o estilo da linha cabeçalho do GridView. |
| PagerStyle | Define o estilo do paginador do GridView. |
| RowStyle | Define o estilo das linhas do GridView. Se a propriedade AlternatingRowStyle é definida as linhas do GridView alternam estilos entre RowStyle e AlternatingRowStyle. |
É possível também mostrar ou ocultar o cabeçalho e o rodapé do GridView utilizando respectivamente das propriedades ShowHeader e ShowFooter.
sexta-feira, 2 de maio de 2008
Bind do DropDownList com uma lista genérica
O DropDownList do ASP.NET pode fazer bind com uma lista genérica(System.Collections.Generic.List), desta forma podemos trabalhar orientado a objetos ou da forma já comum utilizando DataTable. Neste exemplo abaixo criaremos uma classe de Pessoa, criaremos uma lista genérica do tipo Pessoa e faremos o bind com o DropDownList.
Crie um novo site e adicione a classe Pessoa no diretório App_Code, conforme imagem abaixo:
Imagem 1 - Estrutura da aplicação
Coloque duas propriedades na classe pessoa, uma do tipo inteiro Codigo e outra string Nome. Como estamos utilizando o ASP.NET 3.5 podemos fazer conforme código 1:
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 Pessoa
{
public Pessoa(int codigo, string nome)
{
this.Codigo = codigo;
this.Nome = nome;
}
public int Codigo { get; set; }
public string Nome { get; set; }
}
Código 1 - Classe Pessoa(ASP.NET 3.5)
Para quem utiliza o ASP.NET 2.0 deverá escrever conforme 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 Pessoa
{
private int codigo;
private string nome;
public Pessoa(int codigo, string nome)
{
this.Codigo = codigo;
this.Nome = nome;
}
public int Codigo
{
get
{
return codigo;
}
set
{
codigo = value;
}
}
public string Nome
{
get
{
return nome;
}
set
{
nome = value;
}
}
}
Código 2 - Classe Pessoa(ASP.NET 2.0)
Na página, adicione um DropDownList no Default.aspx, altere seu nome para ddlPessoa, conforme Imagem 2 :
Imagem 2 - Adicionando o DropDownList ddlPessoa
Visualize o CodeBehind do Default.aspx(Default.aspx.cs) e no evento Page_Load adicione o código conforme código 3, este cria uma lista de pessoas, faz as configurações necessárias no ddlPessoa e chama o método DataBind para adicionar os valores ao DropDownList.
As configurações necessárias no ddlPessoa é definir a fonte de dados que irá montar os itens, isto é feito definindo a propriedade DataSource, configuramos a lista de Pessoa. Também é necessário configurar as propriedades DataValueField e DataTextField, como cada item do nosso DataSource é uma instância de Pessoa, definimos nestes quais as propriedades de Pessoa, neste caso as propriedades Codigo e Nome.
Outra inforamção importante é que estamos usando generics é necessário adicionar o using ao namespace System.Collections.Generic:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
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 partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<Pessoa> listaPessoas = new List<Pessoa>();
listaPessoas.Add(new Pessoa(0, "Mateus"));
listaPessoas.Add(new Pessoa(1, "Maria"));
listaPessoas.Add(new Pessoa(2, "Jose"));
ddlPessoa.DataSource = listaPessoas;
ddlPessoa.DataValueField = "Codigo";
ddlPessoa.DataTextField = "Nome";
ddlPessoa.DataBind();
}
}
Código 3 - Código da página Default.aspx.cs
Salve tudo e execute o site, visualize também o HTML gerado.
Imagem 3 - Resultado no navegador