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


    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);
            }
        }
    }
  • 相关阅读:
    交换技术 天高地厚
    【转载】VirtualBox中双虚拟机安装部署OpenStack指南 天高地厚
    Redo log 刷入磁盘示意图 天高地厚
    分布式环境下session的存储的几个解决方案 天高地厚
    【转载】mysql 日志管理 天高地厚
    等待类型的分类 天高地厚
    android gamil.com登录设置
    android : Avoiding Memory Leaks
    用点数据包存你的绘图信息
    android 9patch (讲的很不错,相当全面:转)
  • 原文地址:https://www.cnblogs.com/admin11/p/1037675.html
Copyright © 2020-2023  润新知