逆水行船

别人的天堂,是我的异乡;无端的繁华,倍添我的惆怅

 

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

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);
        }
    }
}

 

 

 

posted on 2008-01-14 09:14  荣-  阅读(653)  评论(1编辑  收藏  举报

导航