[自定义服务器控件] 第一步:文本框。

最近在整理我写的几个服务器控件,发出来与大家共享吧。

我写的自定义服务器控件呢分为两个类,

一是“简单继承”控件,就是继承框架里的控件然后加点属性了、事件了什么的。
二是“功能”控件,简单的说那是符合控件,但是呢是以实现一种功能为目的地。这种控件要实现某一种功能,比如分页的功能,添加、修改数据的功能,查询的功能。

原先呢还不会使用接口了什么的,所以呢代码写得有点不太“好看”,现在使用接口、继承了什么的来整理一下。

先发一个“文本框”的吧,就是继承系统的 TextBox,然后加上几个属性、方法。

属性:
TextTrim  返回.Text.Trim()
TextTrimNone 返回 .Text.Trim.Replace("'", "")
CheckDataType 设置 文本框的验证类型。
CheckDataReg  设置 文本框的验证用的正则表达式。
CheckErrorMessage 设置 当没有通过验证时显示给客户的提示信息。

属性(接口):
ControlKind  返回控件的类型。

函数(接口):
GetValue() 获取文本框的值,默认返回   TextTrim
GetValue(ByVal kind As String) 根据 kind 获取对应的文本框的值。

SetValue(ByVal value As String) 给文本框赋值
SetValue(ByVal value As String, ByVal kind As String)给文本框赋值

取值和赋值为什么会有两套呢?那是为了和其他控件兼容,说到后面就好理解了。

定义接口。

[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。Public Interface IGetControlValueInterface IGetControlValue
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    ReadOnly Property ControlKind()Property ControlKind() As String
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Function GetControlValue()Function GetControlValue() As String
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Function GetControlValue()Function GetControlValue(ByVal kind As String) As String
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Sub SetControlValue()Sub SetControlValue(ByVal value As String)
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Sub SetControlValue()Sub SetControlValue(ByVal value As String, ByVal kind As String)
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。End Interface



文本框的代码。

[自定义服务器控件] 第一步:文本框。Imports System.ComponentModel
[自定义服务器控件] 第一步:文本框。Imports System.Web.UI
[自定义服务器控件] 第一步:文本框。Imports HBS
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。<DefaultProperty("Text"), ToolboxData("")> _
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。 Public Class HBSTextBoxClass HBSTextBox
[自定义服务器控件] 第一步:文本框。    Inherits System.Web.UI.WebControls.TextBox
[自定义服务器控件] 第一步:文本框。    Implements INamingContainer
[自定义服务器控件] 第一步:文本框。    Implements IGetControlValue
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    Dim _dataType As String = "101"   '数据类型
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。实现接口#Region "实现接口"
[自定义服务器控件] 第一步:文本框。    <Bindable(True), Category("默认值"), DefaultValue("201"), Description("获取控件类别")> _
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。       ReadOnly Property ControlKind()Property ControlKind() As String Implements IGetControlValue.ControlKind
[自定义服务器控件] 第一步:文本框。        Get
[自定义服务器控件] 第一步:文本框。            Return "201"
[自定义服务器控件] 第一步:文本框。        End Get
[自定义服务器控件] 第一步:文本框。    End Property
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Public Function GetValue()Function GetValue() As String Implements IGetControlValue.GetControlValue
[自定义服务器控件] 第一步:文本框。        Return Me.TextTrimNone
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    End Function
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Public Function GetValue()Function GetValue(ByVal kind As String) As String Implements IGetControlValue.GetControlValue
[自定义服务器控件] 第一步:文本框。        Return Me.TextTrimNone
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    End Function
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Public Sub SetValue()Sub SetValue(ByVal value As String) Implements IGetControlValue.SetControlValue
[自定义服务器控件] 第一步:文本框。        Me.Text = value
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    End Sub
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Public Sub SetValue()Sub SetValue(ByVal value As String, ByVal kind As String) Implements IGetControlValue.SetControlValue
[自定义服务器控件] 第一步:文本框。        Me.Text = value
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    End Sub
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。#End Region
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。设置文本框的 Text 属性;获取 Text.Trim()#Region "设置文本框的 Text 属性;获取 Text.Trim()"
[自定义服务器控件] 第一步:文本框。    <Bindable(True), Category("文本值"), Description("设置文本框的 Text 属性;返回 Text.Trim()。")> _
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Property TextTrim()Property TextTrim() As String
[自定义服务器控件] 第一步:文本框。        Set(ByVal Value As String)
[自定义服务器控件] 第一步:文本框。            Me.Text = Value
[自定义服务器控件] 第一步:文本框。        End Set
[自定义服务器控件] 第一步:文本框。        Get
[自定义服务器控件] 第一步:文本框。            Return Me.Text.Trim()
[自定义服务器控件] 第一步:文本框。        End Get
[自定义服务器控件] 第一步:文本框。    End Property
[自定义服务器控件] 第一步:文本框。#End Region
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。设置文本框的 Text 属性;获取 Text.Trim()#Region "设置文本框的 Text 属性;获取 Text.Trim()"
[自定义服务器控件] 第一步:文本框。    <Bindable(True), Category("文本值"), Description("设置文本框的 Text 属性;返回 Text.Trim()。")> _
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Property TextTrimNone()Property TextTrimNone() As String
[自定义服务器控件] 第一步:文本框。        Set(ByVal Value As String)
[自定义服务器控件] 第一步:文本框。            Me.Text = Value
[自定义服务器控件] 第一步:文本框。        End Set
[自定义服务器控件] 第一步:文本框。        Get
[自定义服务器控件] 第一步:文本框。            Return Me.Text.Trim.Replace("'", "")
[自定义服务器控件] 第一步:文本框。        End Get
[自定义服务器控件] 第一步:文本框。    End Property
[自定义服务器控件] 第一步:文本框。#End Region
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。验证类型#Region "验证类型"
[自定义服务器控件] 第一步:文本框。    <Category("数据验证"), Description("验证输入的内容,需要js脚本配合。"), DefaultValue("101")> _
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Property CheckDataType()Property CheckDataType() As String
[自定义服务器控件] 第一步:文本框。        Set(ByVal Value As String)
[自定义服务器控件] 第一步:文本框。            _dataType = Value
[自定义服务器控件] 第一步:文本框。            '101        b不验证
[自定义服务器控件] 第一步:文本框。            '102        z自然数
[自定义服务器控件] 第一步:文本框。            '103        z整数
[自定义服务器控件] 第一步:文本框。            '104        x小数
[自定义服务器控件] 第一步:文本框。            '105        r日期
[自定义服务器控件] 第一步:文本框。            '106        b必填
[自定义服务器控件] 第一步:文本框。            Select Case Value
[自定义服务器控件] 第一步:文本框。                Case "101" '不验证
[自定义服务器控件] 第一步:文本框。                    'this.Attributes.Add("DataType","");
[自定义服务器控件] 第一步:文本框。                Case "102" '自然数
[自定义服务器控件] 第一步:文本框。                    Me.Attributes.Add("check", "^[0-9]+$")
[自定义服务器控件] 第一步:文本框。                Case "103" '整数
[自定义服务器控件] 第一步:文本框。                    Me.Attributes.Add("check", "^\S?([0-9]+)$")
[自定义服务器控件] 第一步:文本框。                Case "104" '小数                [0-9]{1,5}\.[0-9]{1,2}  ^-?([0]$|^([0-9]{1,5}\.[0-9]{1,2})?$
[自定义服务器控件] 第一步:文本框。                    Me.Attributes.Add("check", "^\S(\-?[0-9]*(\.[0-9]*)?)$")
[自定义服务器控件] 第一步:文本框。                    'Me.Attributes.Add("check", "^d")
[自定义服务器控件] 第一步:文本框。                Case "105" '时间
[自定义服务器控件] 第一步:文本框。                    Me.Attributes.Add("check", "^d{4}-d{1,2}-d{1,2}")
[自定义服务器控件] 第一步:文本框。                Case "106" '必填项
[自定义服务器控件] 第一步:文本框。                    Me.Attributes.Add("check", ".+")
[自定义服务器控件] 第一步:文本框。            End Select
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。        End Set
[自定义服务器控件] 第一步:文本框。        Get
[自定义服务器控件] 第一步:文本框。            If _dataType Is Nothing Then
[自定义服务器控件] 第一步:文本框。                Return ""
[自定义服务器控件] 第一步:文本框。            End If
[自定义服务器控件] 第一步:文本框。            Return _dataType
[自定义服务器控件] 第一步:文本框。        End Get
[自定义服务器控件] 第一步:文本框。    End Property
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    <Category("数据验证"), Description("验证输入的内容,传入正则表达式。"), DefaultValue("0")> _
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。   Property CheckDataReg()Property CheckDataReg() As String
[自定义服务器控件] 第一步:文本框。        Set(ByVal Value As String)
[自定义服务器控件] 第一步:文本框。            Me.Attributes.Add("check", Value)
[自定义服务器控件] 第一步:文本框。        End Set
[自定义服务器控件] 第一步:文本框。        Get
[自定义服务器控件] 第一步:文本框。            If Me.Attributes.Item("check") Is Nothing Then
[自定义服务器控件] 第一步:文本框。                Return ""
[自定义服务器控件] 第一步:文本框。            End If
[自定义服务器控件] 第一步:文本框。            Return Me.Attributes.Item("check").ToString()
[自定义服务器控件] 第一步:文本框。        End Get
[自定义服务器控件] 第一步:文本框。    End Property
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。#End Region
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。验证错误的提示信息#Region "验证错误的提示信息"
[自定义服务器控件] 第一步:文本框。    <Description("验证错误提示信息")> _
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。      Property CheckErrorMessage()Property CheckErrorMessage() As String
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。        '添加提示信息
[自定义服务器控件] 第一步:文本框。        Set(ByVal Value As String)
[自定义服务器控件] 第一步:文本框。            ViewState("msg") = Value
[自定义服务器控件] 第一步:文本框。            Me.Attributes.Add("warning", Value)
[自定义服务器控件] 第一步:文本框。        End Set
[自定义服务器控件] 第一步:文本框。        Get
[自定义服务器控件] 第一步:文本框。            If (ViewState("msg") Is Nothing) Then
[自定义服务器控件] 第一步:文本框。                Return ""
[自定义服务器控件] 第一步:文本框。            Else
[自定义服务器控件] 第一步:文本框。                Return ViewState("msg").ToString()
[自定义服务器控件] 第一步:文本框。            End If
[自定义服务器控件] 第一步:文本框。        End Get
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    End Property
[自定义服务器控件] 第一步:文本框。#End Region
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。[自定义服务器控件] 第一步:文本框。    Protected Overrides Sub OnInit()Sub OnInit(ByVal e As EventArgs)
[自定义服务器控件] 第一步:文本框。        If Not Me.CssClass Is Nothing Then
[自定义服务器控件] 第一步:文本框。            Me.CssClass = "txts"
[自定义服务器控件] 第一步:文本框。            Me.Attributes.Add("DataID", "")
[自定义服务器控件] 第一步:文本框。            Me.Attributes.Add("DataIDs", "")
[自定义服务器控件] 第一步:文本框。        End If
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。    End Sub
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。
[自定义服务器控件] 第一步:文本框。End Class
[自定义服务器控件] 第一步:文本框。


FAQ:

1、文本框的验证是如何实现的?
    使用正则表达式来验证,在具体点说呢就是使用了一个不知道是谁写一个js函数,就是 checkForm(oForm) 来验证的。
    http://www.cnblogs.com/jyk/archive/2007/09/20/899406.html 这里有具体的说明。

2、为什么使用VB.net来写?
    很简单,好写。用VB.net写代码还是很方便的,也是很宽松的。好多在C#里不能通过编译的代码,在VB.net里面就可以正常使用,而且提示也是很“智能”的,当初刚写控件的时候还是不太熟悉,VB.net是很好的选择。
   
以后会陆续说明其他的控件。



上一篇:VBA制作jeecgboot代码生成器


下一篇:使用Xshell连接Linux出错