Veja neste artigo uma sequência de dicas para ASP.NET falaremos sobre dicas de JavaScript e por último dicas de Servidor. Vamos iniciar então com o JavaScript.
Javascript
function getInputs(obj, array) {
if (obj.childNodes != null) {
for (var i = 0; i < obj.childNodes.length; i++) {
var element = obj.childNodes[i];
if (element.nodeName.toUpperCase() ==
'INPUT' && element.type.toUpperCase() == 'TEXT') {
array[array.length] = element;
}
else {
getInputs(element, array);
}
}
}
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
function limpar() {
var array = [];
var msg = '';
getInputs(document, array);
for (var i = 0; i < array.length; i++) {
array[i].value = '';
}
array = null;
}
function validar() {
var array = [];
var msg = '';
getInputs(document, array);
for (var i = 0; i < array.length; i++) {
if (trim(array[i].value) == '') {
msg += 'Campo ' +
array[i].attributes['description'].value + ' em branco!\n';
}
}
array = null;
if (msg != '') {
alert(msg)
return false;
}
}
Servidor
public void Limpar(Control controlP)
{
foreach (Control ctl in controlP.Controls)
{
if (ctl is TextBox)
{
((TextBox)ctl).Text = String.Empty;
}
else if (ctl.Controls.Count > 0)
{
Limpar(ctl);
}
}
}
public void Validar(Control controlP, StringBuilder oStringBuilder)
{
foreach (Control ctl in controlP.Controls)
{
if (ctl is TextBox)
{
TextBox oTextBox = (TextBox)ctl;
if (oTextBox.Text.Trim() == String.Empty)
{
oStringBuilder.Append("Campo " +
oTextBox.Attributes["description"] + " em branco!\\n");
}
}
else if (ctl.Controls.Count > 0)
{
Validar(ctl, oStringBuilder);
}
}
}
ScriptManager.RegisterStartupScript(this,
typeof(Page), "Mensagem", "alert('Hello World');", true);
Abaixo um exemplo onde podemos limpar e validar os textbox sem conhecer os ids dos componentes, utilizamos recursividade para encontrar os componentes, tanto do lado do servidor como do lado do cliente.
Nos componentes Textbox adicionei um novo atributo para colocar a descrição, utilizado para mostrar para o cliente qual campo está em branco.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="DicasAspNet.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<script language="javascript" type="text/javascript">
function limpar() {
var array = [];
var msg = '';
getInputs(document, array);
for (var i = 0; i < array.length; i++) {
array[i].value = '';
}
array = null;
}
function validar() {
var array = [];
var msg = '';
getInputs(document, array);
for (var i = 0; i < array.length; i++) {
if (trim(array[i].value) == '') {
msg += 'Campo ' + array[i].attributes['description'].value +
' em branco!\n';
}
}
array = null;
if (msg != '') {
alert(msg)
return false;
}
}
function getInputs(obj, array) {
if (obj.childNodes != null) {
for (var i = 0; i < obj.childNodes.length; i++) {
var element = obj.childNodes[i];
if (element.nodeName.toUpperCase() == 'INPUT' &&
element.type.toUpperCase() == 'TEXT') {
array[array.length] = element;
}
else {
getInputs(element, array);
}
}
}
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
</script>
<table width="200px" border="0">
<tr>
<td style="width:70px;">
<asp:Label runat="server" Text="Nome: "></asp:Label>
</td>
<td style="width:130px;">
<asp:TextBox ID="TextBox1" runat="server" description="Nome">
</asp:TextBox>
</td>
</tr>
<tr>
<td style="width:70px;">
<asp:Label ID="Label1" runat="server" Text="Idade: "></asp:Label>
</td>
<td style="width:130px;">
<asp:TextBox ID="TextBox2" runat="server" description="Idade">
</asp:TextBox>
</td>
</tr>
<tr>
<td style="width:70px;">
<asp:Label ID="Label2" runat="server" Text="Rua: "></asp:Label>
</td>
<td style="width:130px;">
<asp:TextBox ID="TextBox3" runat="server" description="Rua">
</asp:TextBox>
</td>
</tr>
<tr>
<td style="width:70px;">
<asp:Label ID="Label3" runat="server" Text="Bairro: "></asp:Label>
</td>
<td style="width:130px;">
<asp:TextBox ID="TextBox4" runat="server" description="Bairro">
</asp:TextBox>
</td>
</tr>
<tr>
<td style="width:70px;">
<asp:Label ID="Label4" runat="server" Text="Cidade: "></asp:Label>
</td>
<td style="width:130px;">
<asp:TextBox ID="TextBox5" runat="server" description="Cidade">
</asp:TextBox>
</td>
</tr>
<tr>
<td style="width:70px;">
<asp:Label ID="Label5" runat="server" Text="UF: "></asp:Label>
</td>
<td style="width:130px;">
<asp:TextBox ID="TextBox6" runat="server" description="UF">
</asp:TextBox><br />
</td>
</tr>
</table>
<input id="Button4" type="button" value="Limpar Javascript" onclick="limpar();" />
<asp:Button ID="Button1" runat="server" Text="Limpar Servidor"
onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="Validar Javascript"
OnClientClick="return validar();" />
<asp:Button ID="Button3" runat="server" Text="Validar Servidor"
onclick="Button3_Click" />
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
namespace DicasAspNet
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Limpar(this);
}
protected void Button3_Click(object sender, EventArgs e)
{
StringBuilder oStringBuilder = new StringBuilder();
Validar(this, oStringBuilder);
if (oStringBuilder.ToString() != String.Empty)
{
ScriptManager.RegisterStartupScript(this, typeof(Page),
"Validar", "alert('" + oStringBuilder.ToString() + "');", true);
}
}
public void Limpar(Control controlP)
{
foreach (Control ctl in controlP.Controls)
{
if (ctl is TextBox)
{
((TextBox)ctl).Text = String.Empty;
}
else if (ctl.Controls.Count > 0)
{
Limpar(ctl);
}
}
}
public void Validar(Control controlP, StringBuilder oStringBuilder)
{
foreach (Control ctl in controlP.Controls)
{
if (ctl is TextBox)
{
TextBox oTextBox = (TextBox)ctl;
if (oTextBox.Text.Trim() == String.Empty)
{
oStringBuilder.Append("Campo " +
oTextBox.Attributes["description"] + " em branco!\\n");
}
}
else if (ctl.Controls.Count > 0)
{
Validar(ctl, oStringBuilder);
}
}
}
}
}