Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: Linguagem de Programação Plataforma.NET 2 Aula 06 Usando controles em ASP.NET Nas propriedades do FORM temos a opções EnableViewState. Esta propriedade cria um campo oculto no formulário com os dados preenchidos nos controles, evitando que tenhamos a necessidade de realimenta-los manualmente. Para entender melhor isto, precisamos entender o postback, uma vez que este processo é essencial na arquitetura do ASP.NET. No ASP.NET existe apenas um form sempre. Para utilizar diversos botões no formulário utilizamos sempre do tipo submit, o que permite que o servidor saiba qual botão foi clicado. O processo de postback é quando o servidor recebe os dados que o cliente digitou em uma caixa de texto ou qualquer outro controle, faz o processo interno e retorna ao cliente a mesma página já com processo completo e devidamente alterada. Antes do ASP.NET quando uma página chamava outra e a página voltava do servidor as caixas de texto precisavam ser programaticamente preenchidas com os valores digitados. No ASP.NET isto não é necessário pois o próprio servidor se encarrega de devolver as caixas de texto e quaisquer outros controles já com os dados que estavam digitados. Podemos desligar o postback pela página ou pelo próprio controle, uma vez que todos os controles tem a propriedade AutoPostBack e EnableViewState. O autopostback é muito utilizado em combo para que quando o usuário escolher um valor na lista, por exemplo o estado, este valor é enviado ao servidor que popula a lista de Cidades e retorna ao cliente. A propriedade enableviewstate é utilizada pois caso um controle não possa retornar preenchido, como senha, este valor é desabilitado, impedindo que ao ser enviado ao servidor e retornar venha com o valor anterior. 1
Exemplo Prático 1. Construa um novo projeto do tipo WebApplication 2. Na página Default.aspx adicione os controles a seguir: Altere as propriedades destes controles como mostrado a seguir: Controle Text Id Label1 Nome: lblnome Label2 Nota1: lblnota1 Label3 Nota2: lblnota2 Label4 Nota3: lblnota3 Label5 Nota4: lblnota4 Label6 Resultado Final: lblresultadofinal TextBox1 txtnome TextBox2 txtnota1 TextBox3 txtnota2 TextBox4 txtnota3 TextBox5 txtnota4 Button1 Resultado Final btnresultadofinal 3. Em seguida, dê um clique duplo sobre o Button btnresultado Final e adicione o código abaixo: 2
protected void btnresultadofinal_click(object sender, EventArgs e) string resultado = "Resultado: "; string nome = txtnome.text; float nota1 = Convert.ToSingle(txtNota1.Text); float nota2 = Convert.ToSingle(txtNota2.Text); float nota3 = Convert.ToSingle(txtNota3.Text); float nota4 = Convert.ToSingle(txtNota4.Text); float media = (nota1 + nota2 + nota3 + nota4) / 4; if (media >= 7) resultado += "APROVADO com média "+media; else resultado += "REPROVADO com média " + media; lblresultado.text = resultado; 4. Execute o aplicativo 1.1 - Modelagem de Classes 1. Construa uma nova solução com o nome de SlnFuncionario. 2. Adicione a ele um projeto do tipo ClassLibrary com o nome de LblFuncionario. 3. Adicione a ele duas pastas: Model e Business. 4. Na primeira faça a modelagem das classes Funcionário (abstrata), FuncionarioCLT e FuncionarioPJ. 3
Funcionario.cs namespace LblFuncionario.Model public abstract class Funcionario #region [ATRIBUTOS] private String nome; private float salariobase; #region [ATRITUBOS ACESSO] public String Nome get return nome; set nome = value; public float SalarioBase get return salariobase; set salariobase = value; 4
FuncionarioCLT.cs namespace LblFuncionario.Model public class FuncionarioCLT : Funcionario #region [ATRIBUTOS] private float seguromedico; private float valetransporte; #region [ATRITUBOS ACESSO] public float SeguroMedico get return seguromedico; set seguromedico = value; public float ValeTransporte get return valetransporte; set valetransporte = value; 5
FuncionarioPJ.cs namespace LblFuncionario.Model public class FuncionarioPJ : Funcionario #region [ATRIBUTOS] private Int32 quantidadehorasextras; private float valorhoraextra; #region [ATRITUBOS ACESSO] public Int32 QuantidadeHorasExtras get return quantidadehorasextras; set quantidadehorasextras = value; public float ValorHoraExtra get return valorhoraextra; set valorhoraextra = value; 6
5. Em seguida, construa as classes de negócio (Business) FuncionarioCLTBusiness.cs using LblFuncionario.Model; namespace LblFuncionario.Business public class FuncionarioCLTBusiness public FuncionarioCLT funcionarioclt = new FuncionarioCLT(); public float calcularsalario() return funcionarioclt.salariobase - (funcionarioclt.seguromedico + funcionarioclt.valetransporte); 7
FuncionarioPJBusiness.cs using LblFuncionario.Model; namespace LblFuncionario.Business public class FuncionarioPJBusiness public FuncionarioPJ funcionariopj = new FuncionarioPJ(); public float calcularsalario() return funcionariopj.salariobase + (funcionariopj.quantidadehorasextras * funcionariopj.valorhoraextra); 6. Construa uma DLL a partir do projeto LblFuncionario. 7. Construa agora um projeto web com o nome de WebFuncionario. 8. Em seguida, adicione referencia à DLL do projeto LblFuncionario. 9. Construa um WebForm que possibilite cadastrar do lado esquerdo um FuncionárioPJ e do lado direito um FuncionárioCLT. 8