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

简介: 最近在整理我写的几个服务器控件,发出来与大家共享吧。 我写的自定义服务器控件呢分为两个类, 一是“简单继承”控件,就是继承框架里的控件然后加点属性了、事件了什么的。 二是“功能”控件,简单的说那是符合控件,但是呢是以实现一种功能为目的地。
最近在整理我写的几个服务器控件,发出来与大家共享吧。

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

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

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

先发一个“文本框”的吧,就是继承系统的 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 IGetControlValue Interface IGetControlValue

    
ReadOnly Property ControlKind()Property ControlKind() As String

    
Function GetControlValue()Function GetControlValue() As String
    
Function GetControlValue()Function GetControlValue(ByVal kind As StringAs String

    
Sub SetControlValue()Sub SetControlValue(ByVal value As String)
    
Sub SetControlValue()Sub SetControlValue(ByVal value As StringByVal kind As String)

End Interface


文本框的代码。
Imports  System.ComponentModel
Imports  System.Web.UI
Imports  HBS

< DefaultProperty( " Text " ), ToolboxData( " <{0}:HBSTextBox runat=server></{0}:HBSTextBox> " ) >  _
 
Public   Class HBSTextBox Class 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 StringAs String Implements IGetControlValue.GetControlValue
        
Return Me.TextTrimNone

    
End Function


    
Public Sub SetValue()Sub SetValue(ByVal value As StringImplements IGetControlValue.SetControlValue
        
Me.Text = value

    
End Sub


    
Public Sub SetValue()Sub SetValue(ByVal value As StringByVal kind As StringImplements 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 NothingThen
                
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是很好的选择。
   

以后会陆续说明其他的控件。
相关文章
|
3月前
|
弹性计算 监控 数据可视化
ecs自定义监控
ecs自定义监控
43 1
|
10月前
|
开发框架 前端开发 .NET
Ajax之三 Ajax服务器端控件(下)
Ajax之三 Ajax服务器端控件(下)
50 0
|
10月前
|
开发框架 前端开发 JavaScript
Ajax之三 Ajax服务器端控件(上)
Ajax之三 Ajax服务器端控件
48 0
|
11月前
|
Web App开发 前端开发 JavaScript
SAP UI5 应用开发教程之八十七 - 如何让 SAP UI5 Mock 服务器支持自定义 url 参数试读版
SAP UI5 应用开发教程之八十七 - 如何让 SAP UI5 Mock 服务器支持自定义 url 参数试读版
|
4天前
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
18 8
|
20天前
|
弹性计算 资源调度 API
云服务器 ECS产品使用问题之如何实现自定义页面适配移动端
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
云服务器 ECS产品使用问题之如何实现自定义页面适配移动端
|
5天前
|
网络协议 Ubuntu Linux
如何在 DigitalOcean 云服务器上创建自定义品牌名称服务器
如何在 DigitalOcean 云服务器上创建自定义品牌名称服务器
14 0
|
2月前
|
弹性计算 网络协议 安全
阿里云服务器ECS自定义购买方式各选项参数选择与注意事项参考
在我们通过自定义购买的方式购买阿里云服务器器ECS时,会有多个选项,有的新手用户可能并不是很清楚这些选项是什么,选择或设置时需要注意什么,本文将从付费类型、地域与可用区、网络及实例、镜像、存储、带宽和安全组、管理设置以及高级选项等多个方面,为您详细介绍如何选择与配置阿里云ECS实例,以供参考。
阿里云服务器ECS自定义购买方式各选项参数选择与注意事项参考
|
3月前
|
资源调度
在 Next.js 中使用自定义服务器框架进行服务器端渲染
在 Next.js 中使用自定义服务器框架进行服务器端渲染
在自定义服务器框架中处理 GET 请求
在自定义服务器框架中处理 GET 请求

热门文章

最新文章