Controles personalizados utilizando herencia en ASP.NET

En el siguiente tutorial aprenderán la forma de crear sus propios controles aprovechando ademas las características de los controles ya existentes. Esto quiere decir que podrán realizar por ejemplo una caja de texto que realice validaciones básicas o avanzadas, como permitir solo números o cambiar dejar las letras siempre en mayúsculas.

Empecemos…

Agregaremos a nuestro proyecto un nuevo control de tipo Web User Control

asp1

Tendremos una ventana como la siguiente

asp2

Borramos la palabra Control

asp3

Vamos al código del control presionando F7 o doble clic directamente en el archivo (CtrlTextbox.ascx.cs):

asp4

Reemplazamos

public partial class CtrlTextbox : System.Web.UI.UserControl

. . .

Por

public partial class CtrlTextbox : TextBox

. . .

Luego definimos los tipos de validaciones que realizaremos a través de una enumeración

namespace ControlesDinamicos
{
public enum EnumValidacion {
  Normal,
  SoloNumeros,
  Mayuscula
}

public partial class CtrlTextbox : System.Web.UI.UserControl
{

Luego  definimos una variable encapsulada de tipo EnumValidacion

public partial class CtrlTextbox : TextBox
{
  private EnumValidacion validacion;

  public void Page_Load(object sender, EventArgs e)
  {
  }

  public EnumValidacion Validacion
  {
     get { return validacion; }
     set { validacion = value; }
  }
}

Por ultimo definiremos el tipo de validación dependiendo del valor que nos manden por parámetro.

protected override void OnLoad(EventArgs e)
{
  switch (validacion)
  {
    case EnumValidacion.Normal:
       break;
    case EnumValidacion.SoloNumeros:
       this.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
       break;
    case EnumValidacion.Mayuscula:
       this.Style.Add("text-transform", "uppercase");
       break;
  }

  base.OnLoad(e);
}

Nuestro control deberia quedar de la siguiente manera:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
sing System.Web.UI.WebControls;

namespace ControlesDinamicos
{
public enum EnumValidacion {
  Normal,
  SoloNumeros,
  Mayuscula
}

public partial class CtrlTextbox : TextBox
{
   private EnumValidacion validacion;
   
   public void Page_Load(object sender, EventArgs e)
   {
   }

   protected override void OnLoad(EventArgs e)
   {
   switch (validacion)
   {
      case EnumValidacion.Normal:
        break;
      case EnumValidacion.SoloNumeros:
        this.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
        break;
      case EnumValidacion.Mayuscula:
        this.Style.Add("text-transform", "uppercase");
        break;
   }
   base.OnLoad(e);
}

public EnumValidacion Validacion
{
  get { return validacion; }
  set { validacion = value; }
}
}
}

Ahora es importante compilar nuestro proyecto para que se refresquen los cambios!!!

Si vamos a nuestra página asp en el panel de herramientas

Veremos un nuevo control

asp5

Para que funcione correctamente debemos agregar la función de javascript y arrastrarlo hacia nuestro proyecto:


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ControlesDinamicos._Default" %>
<%@ Register Assembly="ControlesDinamicos" Namespace="ControlesDinamicos" TagPrefix="cc1" %>




 


    


    

Si quieren cambiar el tipo de comportamiento van a las propiedades y verán un listado con las opciones disponibles

asp6

Esperamos sea de su utilidad

Saludos

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *