应用自定义控件实现页面输入数据自动判断

1:在页面中需要一个输入日期的TextBOX。

2:扩展TextBOX,使其具有属性:1)控件名称--例如【生日】,数据类型【例如:DateTime】,是否允许为空,最大长度,最小长度:
<cc1:TextBoxEx ID="txtClassDate" OnClick="ShowDateTime(this,'Date');" TextID="生日" TypeName="DateTime"                     IsNotNull="true" MaxValueLength="255" MinValueLength="8" runat="server"></cc1:TextBoxEx>

3:根据属性生成alt属性字符串:
<input name="_ctl0:DefaultContent:txtClassDate" type="text" id="_ctl0_DefaultContent_txtClassDate" OnClick="ShowDateTime(this,'Date');" alt="生日;ColumnTextBox;DateTime;1;0;0;" />

ColumnTextBox表示控件类型为TextBox

字符串:生日;ColumnTextBox;DateTime;1;255;8;的含义:
控件对应的项:生日【生日】
控件类型为:文本框【ColumnTextBox】
输入控件中的数据类型为:日期类型【DateTime】
控件值不允许为空:【1】
控件值最大长度:255【255】
控件值最小长度:8【8】

4:通过Javascript获取alt字符串:
control = document.all("_ctl0_DefaultContent_txtClassDate");
var alt = control.alt;
5:将alt字符串分解为3表述的含义:
/
// 根据alt取得对象
//
function GetObjectFromAlt(alt)
{
    var arr = alt.split( ";" );
    var txtObj = new Object();
   
    // 名称
    txtObj.Text = arr[0];
   
    // 控件类型
    txtObj.ControlType = arr[1];
   
    // 数据类型
    txtObj.TypeName = arr[2];
   
    // 是否不允许为空
    txtObj.IsNotNull = arr[3];
   
    // 最小长度
    txtObj.MinLength = arr[4];
   
    // 最大长度
    txtObj.MaxLength = arr[5];
    return txtObj;
}
var txtObj = GetObjectFromAlt(alt);
6:针对取得的txtObj对象进行判断输入数据是否合法

7:将页面验证代码抽象:
1)通过javascript取得所有页面控件:
 var length = document.all.length;
for (var i = 0; i < length; i++)
{
    var item = document.all(i);
}
2)判断控件类型是不是文本框:item.tagName  == "INPUT"【因为ControlType为ColumnTextBox,即文本框】
3)判断控件alt属性是否包含“;”,如果包含,则表示是我们扩展的自定义文本框。则进行输入数据验证。

8:自定义TextBox的实现:

using  System;
using  System.Data;
using  System.Collections.Generic;
using  System.Text;
using  System.Web;
using  System.Web.UI.WebControls;
using  System.Drawing;
using  System.Drawing.Design;
using  System.ComponentModel;
using  System.IO;
using  System.Data.OleDb;
using  System.Web.UI;

namespace  DOTNET.Web
{
    
///   <summary>
    
///  扩展TextBox。
    
///   </summary>
    
///   <author> 天志 </author>
    
///   <log date="2008-01-12"> 创建 </log>
    [ToolboxBitmap( typeof (DOTNET.Web.TextBoxEx),  "" ),
  ToolboxData(
" <{0}:TextBoxEx runat=server></{0}:TextBoxEx> " )]
    
public   class  TextBoxEx : TextBox
    {
        
private   bool  isNotNull  =   false ;

        [Bindable(
true ),
        Category(
" 是否必填 " ),
        DefaultValue(
" false " ),
        Description(
" 是否必填 " )]
        
public   bool  IsNotNull
        {
            
get
            {
                
return   this .isNotNull;
            }
            
set
            {
                
this .isNotNull  =  value;
            }
        }

        
private   string  textID;

        [Bindable(
true ),
         Category(
" 文本ID " ),
         Description(
" 文本ID " )]
        
public   string  TextID
        {
            
set
            {
                textID 
=  value;
            }
            
get
            {
                
return  textID;
            }
        }

        
private   int  maxValueLength  =   0 ;

        [Bindable(
true ),
         Category(
" 最大长度 " ),
         DefaultValue(
" 0 " ),
         Description(
" 最大长度 " )]
        
public   int  MaxValueLength
        {
            
get
            {
                
return  maxValueLength;
            }
            
set
            {
                maxValueLength 
=  value;
            }
        }

        
private   int  minValueLength  =   0 ;

        [Bindable(
true ),
         Category(
" 最小长度 " ),
         DefaultValue(
" 0 " ),
        Description(
" 最小长度 " )]
        
public   int  MinValueLength
        {
            
get
            {
                
return  minValueLength;
            }
            
set
            {
                minValueLength 
=  value;
            }
        }

        
private   string  typeName  =   " string " ;

        [Bindable(
true ),
         Category(
" 数据类型 " ),
         DefaultValue(
" string " ),
         Description(
" 数据类型 " )]
        
public   string  TypeName
        {
            
get
            {
                
return  typeName;
            }
            
set
            {
                typeName 
=  value;
            }
        }

        
protected   override   void  Render(HtmlTextWriter writer)
        {
            
string  text  =  ResourceMng.GetNameByID( this .TextID)  +   " ; " ;
            text 
+=   " ColumnTextBox; " ;
            text 
+=  TypeName  +   " ; " ;
            
if  ( this .isNotNull)
            {
                text 
+=   " 1; " ;
            }
            
else
            {
                text 
+=   " 0; " ;
            }
            text 
+=   this .MinValueLength  +   " ; " ;
            text 
+=   this .MaxValueLength  +   " ; " ;
            
base .Attributes[ " alt " =  text;

            
base .Render(writer);
        }
    }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值