domingo, 11 de maio de 2008

Usando os controles de validação

Neste exemplo vamos criar um formulário de compra de títulos, onde será informado para o usuário o valor de um título e poderá ser comprado títulos informando quantidade ou valor. O site fará o cálculo da quantidade ou valor total de acordo com o botão selecionado. O resultado final será conforme Imagem 1.


Imagem 1 - Execução do exemplo

Crie um novo site. Abra a página Default.aspx e adicione um controle label e defina as propriedades da seguinte forma:

  • ID : lblDescricaoValor

  • Text: Valor de cada título:

Adicione outro Label e defina as propriedades da seguinte forma:

  • ID: lblValor

Adicione um controle ValidationSummary e definas as propriedades:

  • ID: vsQuantidade

  • ValidationGroup: Quantidade

Adicione mais um controle Label e defina as propriedades:

  • ID: lblQuantidade

  • Text: Quantidade:

Adicione um controle do tipo TextBox e defina as propriedades:

  • ID: txtQuantidadeDesejada

Adicione um controle RequiredFieldValidator e defina as propriedades:

  • ID: rfvQuantidade

  • ControlToValidate: txtQuantidadeDesejada

  • Display: Dynamic

  • ErrorMessage: Informe a Quantidade

  • Text: *

  • ValidationGroup: Quantidade

Adicione um controle CompareValidator, para garantir que um número inteiro seja digitado e defina as propriedades:

  • ID: cvQuantidade

  • ControlToValidate: txtQuantidadeDesejada

  • Display: Dynamic

  • ErrorMessage: Informe um número inteiro

  • Operator: GreaterThan

  • Text: *

  • Type: Integer

  • ValidationGroup: Quantidade

  • ValueToCompare: 0

Adicione um botão e defina as propriedades:

  • ID: btnCalcularValor

  • Text: Calcular Valor

  • ValidationGroup: Quantidade

Nossa página que contêm controles que serão usados no cálculo do valor por quantidade deve parecer com a Imagem 2 :


Imagem 2 - Controles para Calcular Valor

Adicione um controle ValidationSummary e definas as propriedades:

  • ID: vsValor

  • ValidationGroup: Valor

Adicione um controle do tipo Label e defina as propriedades:

  • ID: lblPorValor

  • Text: Valor:

Adicione um controle do tipo TextBox e defina as propriedades:

  • ID: txtValorDesejado

Adicione um controle CompareValidator, para garantir que um número inteiro seja digitado e defina as propriedades:

  • ID: cvValor

  • ControlToValidate: txtValorDesejado

  • Display: Dynamic

  • ErrorMessage: Informe um número inteiro

  • Operator: GreaterThan

  • Text: *

  • Type: Currency

  • ValidationGroup: Valor

  • ValueToCompare: 0

Adicione um controle RequiredFieldValidator e defina as propriedades:

  • ID: rfvValor

  • ErrorMessage: Informe o Valor

  • Text: *

  • ControlToValidate: txtValorDesejado

  • ValidationGroup: Quantidade

Adicione um botão e defina as propriedades:

  • ID: btnCalcularQuantidade

  • Text: Calcular Quantidade

  • ValidationGroup: Valor

Nossa página que agora também contêm controles que serão usados no cálculo da quantidade por valor deve parecer com a Imagem 3 :


Imagem 3 - Controles para Calcular Quantidade

Adicionamos agora os controles que informam o total da compra. Adicionaremos um Panel e definimos as seguintes propriedades:

  • ID: pnCompra

  • GroupingText: Valores de compra

  • Visible: False

Adicionamos um controle Label dentro do Panel pnCompra e definimos as propriedades:

  • ID: lblQuantidadeCompra

  • Text:Quantidade:

Adicionamos um controle TextBox dentro do Panel pnCompra e definimos as propriedades:

  • ID: txtQuantidadeCompra

Adicionamos um controle Label dentro do Panel pnCompra e definimos as propriedades:

  • ID: lblValorCompra

  • Text: Valor da Compra:

Adicionamos um controle TextBox dentro do Panel pnCompra e as propriedades deverão estar definidas como:

  • ID: txtValorCompra

  • ReadOnly: True

Adicionamos um controle Button dentro do Panel pnCompra e definimos as propriedades:

  • ID: btnComprar

  • Text: Comprar

Nossa página deverá ficar como a Imagem 4:


Imagem 4 - Todos os controles

Vamos agora adicionar os códigos nos eventos apropriados, primeiro vamos programar o a exibição do valor do título. Adicionaremos uma CONST com o valor do título e atribuímos estes no lblValor, conforme código 1:

public const decimal ValotTitulo = 1000;

protected void Page_Load(object sender, EventArgs e)
{
lblValor.Text = ValotTitulo.ToString();
}

Código 1 – Definindo o valor do título

Programaremos o click do btnCalcularValor conforme código 2:

protected void btnCalcularValor_Click(object sender, EventArgs e)
{

decimal valorCompra = ValotTitulo * int.Parse(txtQuantidadeDesejada.Text);
txtQuantidadeCompra.Text = txtQuantidadeDesejada.Text;
txtValorCompra.Text = valorCompra.ToString();


pnCompra.Visible = true;
}

Código 2 – Calculando o Valor

Programaremos o click do btnCalcularQuantidade conforme código 3:

protected void btnCalcularQuantidade_Click(object sender, EventArgs e)
{

decimal valorDesejadoCompra = decimal.Parse(txtValorDesejado.Text);
decimal valorCompra = valorDesejadoCompra - (valorDesejadoCompra % ValotTitulo);
txtValorCompra.Text = valorCompra.ToString();


int quantidade = Convert.ToInt32(valorCompra / ValotTitulo);
txtQuantidadeCompra.Text = quantidade.ToString();
pnCompra.Visible =
true;
}

Código 3 – Calculando a Quantidade

Execute a aplicação e repare que as validações acontecem tanto em cliente(Javascript se o navegador suportar), quanto em servidor.