Click here to Skip to main content
15,910,277 members
Articles / Web Development / HTML
Article

Advance Textbox Web Component

Rate me:
Please Sign up or sign in to vote.
1.12/5 (10 votes)
20 Mar 200512 min read 33.9K   389   15   2
TextBox Which Support Char Case, Filter, Decimal, Numeric

Forget about custom control. Lets make a new component. This component inherits from textbox class. Add this component into your ToolBox Panel. Right Click at ToolboxPanel, choose add/remove items, click browse then point to IMAWA.AdvCom.dll file.

Download source code - 11.8 Kb

Imports System.Globalization
'Coding by : I Made Agus W.A (bluechip_asia@yahoo.com / made.in.indonesia@gmail.com)
'This Source Code was distributed for Educational Purposes Only

Public Class AdvTextBox
Inherits System.Web.UI.WebControls.TextBox

Dim varUpperCase As Boolean = False
Dim varLowerCase As Boolean = False
Dim varNumeric As Boolean = False
Dim varCharFilter As String = ""
Dim varDecimalMode As Boolean = False
Dim varMarkIfEmpty As Boolean = False
Dim varMasking As String = ""
Dim varDataGroup As String = ""
Dim VarSqlDbType As SqlDbType = SqlDbType.Char
Dim VarDataLength As Integer = 0
Dim varParameterDirection As ParameterDirection = ParameterDirection.InputOutput
Dim varDataField As String = ""
Dim varEnabledEncode95 As Boolean = False
Dim varDataTitle As String = ""
Dim varShowOnGrid As Boolean = True
Dim varShowOnSearch As Boolean = True
Dim varRegisteredControl As Boolean = True

#Region "Decimal Handling Variable"
Dim Koma As Char = ","
Dim Ttk As Char = "."
Dim Rata As Integer = 25
Dim Perintah As String = ""
#
End Region

#Region "Decimal Properties"
Public Property DecimalChar() As Char
Get

Return Koma
End Get

Set(ByVal Value As Char)
Koma = Value
End Set

End Property

Public Property SeparatorChar() As Char

Get

Return Ttk

End Get

Set(ByVal Value As Char)

Ttk = Value

End Set

End Property

Public Property DecimalAlign() As Byte

Get

Return CInt(Rata)

End Get

Set(ByVal Value As Byte)

Rata = Value.ToString.Trim

End Set

End Property

#End Region

#Region "Decimal Private Function"

Private Function getmark() As Char

Dim mystr As String = ((3 / 100) + 13).ToString

Dim ttk As Integer = mystr.IndexOf(".")

If ttk > 0 Then

Return "."

Else

Return ","

End If

End Function

Private Function clearvalue(ByVal myvalue As String) As String

Dim i As Integer = 0

Dim mystr As String = ""

For i = 0 To myvalue.Length - 1

If myvalue.Chars(i) <> Ttk Then

If myvalue.Chars(i) = Koma Then

mystr += getmark()

Else

mystr += myvalue.Chars(i)

End If

End If

Next

Return mystr

End Function

Private Function reversestring(ByVal mydata As String) As String

Dim myhasil As String = ""

Dim i As Integer

If mydata.Length > 1 Then

For i = 0 To (mydata.Length - 1)

myhasil = mydata.Chars(i) + myhasil

Next

Else

myhasil = mydata

End If

Return myhasil

End Function

Private Function alignstring(ByVal mydata As String)

Dim myhasil As String = mydata

If (Rata > 0) Then

While (myhasil.Length < Rata)

myhasil = " " + myhasil

End While

End If

Return myhasil

End Function

Private Function ParseMoney(ByVal myvalue As String) As String

Dim pos As Integer = 0

Dim ekstensi As String = ""

Dim negatif As String = ""

Dim i As Integer

For i = 0 To myvalue.Length - 1

If (myvalue.Chars(i) = Ttk) Or (myvalue.Chars(i) = Koma) Then

pos = i

End If

If myvalue.Chars(i) = "-" Then

negatif = "-"

End If

Next

Dim hasil As String = ""

Dim selesai As String = ""

If pos > 0 Then

For i = 0 To (pos - 1)

hasil += myvalue.Chars(i)

Next

For i = (pos + 1) To (myvalue.Length - 1)

ekstensi += myvalue.Chars(i)

Next

Else

hasil = myvalue

End If

If ekstensi = "" Then

ekstensi = "0"

End If

If hasil.Length > 1 Then

hasil = reversestring(hasil)

For i = 0 To hasil.Length - 1

selesai += hasil.Chars(i)

If (i + 1) Mod 3 = 0 Then

If (i < (hasil.Length - 1)) Then

selesai += Ttk

End If

End If

Next

Return alignstring(reversestring(selesai) + Koma + ekstensi)

Else

Return alignstring(negatif + hasil + Koma + ekstensi)

End If

End Function

#End Region

#Region "Script Handling"

Private Sub RegisterInitialScript()

Dim MyScript As String = "<script>"

MyScript &= "function ismatchchar(mychar, myrange) {for (var myhasil=false,i = 0; i < myrange.length; i++) {" & vbCrLf

MyScript &= "if (myrange.charAt(i) == mychar){myhasil=true;}}return myhasil;}" & vbCrLf

MyScript &= "function textfilter(myobj,myrange) {" & vbCrLf

MyScript &= "mydata = document.forms[0].elements[myobj].value;" & vbCrLf

MyScript &= "for (var myhasil = '',i = 0; i < mydata.length; i++) {" & vbCrLf

MyScript &= "if (ismatchchar(mydata.charAt(i),myrange) == true) {myhasil += mydata.charAt(i);}} " & vbCrLf

MyScript &= "document.forms[0].elements[myobj].value = myhasil;return myhasil;}" & vbCrLf

MyScript &= "</Script>" & vbCrLf

If Not Page.IsStartupScriptRegistered("InitialScript") Then

Page.RegisterStartupScript("InitialScript", MyScript)

End If

End Sub

Private Sub RegisterDecimalScript()

Dim MyScript, DateFormat As String

MyScript = ""

MyScript &= "<Script>" & vbCrLf

'Get character position

MyScript &= "function getpos(myvalue, mymark) {" & vbCrLf

MyScript &= "mypos=0;" & vbCrLf

MyScript &= "for (i = 0; i < myvalue.length; i++) {" & vbCrLf

MyScript &= " if (myvalue.charAt(i) == mymark) {" & vbCrLf

MyScript &= " mypos=i;" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= "return mypos;" & vbCrLf

MyScript &= "}" & vbCrLf

'Filtering string

MyScript &= "function stringfilter(mydata,myrange) {" & vbCrLf

MyScript &= "for (var myhasil = '',i = 0; i < mydata.length; i++) {" & vbCrLf

MyScript &= " if (ismatchchar(mydata.charAt(i),myrange) == true) {" & vbCrLf

MyScript &= " myhasil += mydata.charAt(i); " & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= " } " & vbCrLf

MyScript &= "return myhasil" & vbCrLf

MyScript &= "}" & vbCrLf

'Get Numeric

MyScript &= "function getnumeric(mytype, myvalue, mymark) {" & vbCrLf

MyScript &= "mypos=getpos(myvalue,mymark);" & vbCrLf

MyScript &= "myres='';" & vbCrLf

MyScript &= "if (mytype.toLowerCase() == 'decimal') {" & vbCrLf

MyScript &= " if (mypos != 0) {" & vbCrLf

MyScript &= " for (i=mypos+1; i < myvalue.length; i++) {" & vbCrLf

MyScript &= " myres += myvalue.charAt(i);" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= " else {" & vbCrLf

MyScript &= " myres = '0';" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= "}" & vbCrLf

MyScript &= "if (mypos == 0) {" & vbCrLf

MyScript &= " mypos=myvalue.length;" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= "if (mytype.toLowerCase() == 'integer') {" & vbCrLf

MyScript &= "for (i=0; i < mypos; i++) {" & vbCrLf

MyScript &= " myres += myvalue.charAt(i);" & vbCrLf

MyScript &= " } " & vbCrLf

MyScript &= "}" & vbCrLf

MyScript &= "return myres;" & vbCrLf

MyScript &= "}" & vbCrLf

'Reverse string

MyScript &= "function reversestring (mydata) {" & vbCrLf

MyScript &= " for (var myhasil = '',i=mydata.length-1;i>-1;i=i-1){" & vbCrLf

MyScript &= " myhasil += mydata.charAt(i);" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= " return myhasil;" & vbCrLf

MyScript &= "}" & vbCrLf

'Set Align to the Left

MyScript &= "function alignstring(mydata,mynum) {" & vbCrLf

MyScript &= "myhasil = mydata;" & vbCrLf

MyScript &= "if (mynum > 0) {" & vbCrLf

MyScript &= " while (myhasil.length < mynum) {" & vbCrLf

MyScript &= " myhasil = ' '+myhasil;" & vbCrLf

MyScript &= " }" & vbCrLf

MyScript &= " } " & vbCrLf

MyScript &= "return myhasil " & vbCrLf

MyScript &= "}" & vbCrLf

MyScript &= "function valcurrnum(myobj,mymark,mydec,mynum) {" & vbCrLf

MyScript &= "if (ismatchchar('-',eval('document.forms[0].' + myobj).value)== true) {" & vbCrLf

MyScript &= "negatif = '-';" & vbCrLf

MyScript &= "} else {" & vbCrLf

MyScript &= "negatif = '' ;" & vbCrLf

MyScript &= "}" & vbCrLf

MyScript &= "mynilai = eval('document.forms[0].' + myobj).value;" & vbCrLf

MyScript &= "mytemp = getnumeric('integer',mynilai,mydec);" & vbCrLf

MyScript &= "mytemp = stringfilter(mytemp,'0123456789');" & vbCrLf

MyScript &= "myint = reversestring(mytemp);" & vbCrLf

MyScript &= "for (var myhasil = '',i = 0; i < myint.length; i=i+1) {" & vbCrLf

MyScript &= "myhasil += myint.charAt(i);" & vbCrLf

MyScript &= "if ((i+1) % 3 == 0){" & vbCrLf

MyScript &= "if (i < (myint.length - 1)){" & vbCrLf

MyScript &= "myhasil += mymark;" & vbCrLf

MyScript &= "}" & vbCrLf

MyScript &= "}" & vbCrLf

MyScript &= "}" & vbCrLf

MyScript &= "eval('document.forms[0].' + myobj).value = alignstring(negatif+reversestring(myhasil)+mydec+getnumeric('decimal',mynilai,mydec),mynum);" & vbCrLf

MyScript &= "}" & vbCrLf

'MyScript &= "function update() {" & vbCrLf

'MyScript &= "valcurrnum('" + ClientID.Trim + "',ttk,kma,rata);" & vbCrLf

'MyScript &= "}" & vbCrLf

MyScript &= "</Script>" & vbCrLf

If Not Page.IsStartupScriptRegistered("CurrencyVerification") Then

Page.RegisterStartupScript("CurrencyVerification", MyScript)

End If

End Sub

#End Region

#Region "General Property"

Public Property UpperCase() As Boolean

Get

Return varUpperCase

End Get

Set(ByVal Value As Boolean)

varUpperCase = Value

If UpperCase = True Then

LowerCase = False

NumericMode = False

DecimalMode = False

Me.Attributes.Add("onChange", "javascript:this.value=this.value.toUpperCase();") 'uppertextbox('" + ClientID + "');

End If

End Set

End Property

Public Property LowerCase() As Boolean

Get

Return varLowerCase

End Get

Set(ByVal Value As Boolean)

varLowerCase = Value

If LowerCase Then

UpperCase = False

NumericMode = False

DecimalMode = False

Attributes.Add("OnChange", "javascript:this.value=this.value.toLowerCase();")

End If

End Set

End Property

Public Property NumericMode() As Boolean

Get

Return varNumeric

End Get

Set(ByVal Value As Boolean)

varNumeric = Value

If NumericMode = True Then

PropertyOn("NumericMode")

Attributes.Add("OnChange", "javascript:textfilter('" + ClientID + "','0123456789');")

End If

End Set

End Property

Public Property TextFilter() As String

Get

Return varCharFilter

End Get

Set(ByVal Value As String)

varCharFilter = Value

If TextFilter.Length > 0 Then

PropertyOn("textfilter")

Me.Attributes.Add("OnChange", "javascript:this.value=stringfilter(this.value,'" + TextFilter + "');")

End If

End Set

End Property

Public Property DecimalMode() As Boolean

Get

Return varDecimalMode

End Get

Set(ByVal Value As Boolean)

varDecimalMode = Value

If DecimalMode = True Then

PropertyOn("DecimalMode")

Attributes.Add("onChange", "javascript:valcurrnum('" + ClientID + "','" + Ttk + "','" + Koma + "'," + Rata.ToString + ");")

End If

End Set

End Property

Public Property MarkIfEmpty() As Boolean

Get

Return varMarkIfEmpty

End Get

Set(ByVal Value As Boolean)

varMarkIfEmpty = Value

End Set

End Property

Public ReadOnly Property CustomMask() As String

Get

Return varMasking

End Get

'Set(ByVal Value As String)

' varMasking = Value

'End Set

End Property

Private Sub PropertyOn(ByVal ActiveProperty As String)

If Not ActiveProperty.ToLower = "uppercase" Then

UpperCase = False

End If

If Not ActiveProperty.ToLower = "lowercase" Then

LowerCase = False

End If

If Not ActiveProperty.ToLower = "numericmode" Then

NumericMode = False

End If

If Not ActiveProperty.ToLower = "textfilter" Then

TextFilter = ""

End If

If Not ActiveProperty.ToLower = "decimalmode" Then

DecimalMode = False

End If

End Sub

#End Region

#Region "Data Access Handling"

Public Property DataGroup() As String

Get

Return varDataGroup.ToUpper

End Get

Set(ByVal Value As String)

varDataGroup = Value.ToUpper.Trim

If DataField.Length > 0 Then

ID = "tb_" + DataGroup.ToUpper + DataField.ToLower

End If

End Set

End Property

Public Property DataType() As SqlDbType

Get

Return VarSqlDbType

End Get

Set(ByVal Value As SqlDbType)

VarSqlDbType = Value

End Set

End Property

Public Property DataLength() As Integer

Get

Return VarDataLength

End Get

Set(ByVal Value As Integer)

VarDataLength = Value

End Set

End Property

Public Property ParameterDirection() As ParameterDirection

Get

Return varParameterDirection

End Get

Set(ByVal Value As ParameterDirection)

varParameterDirection = Value

End Set

End Property

Public Property DataField() As String

Get

Return varDataField

End Get

Set(ByVal Value As String)

varDataField = Value.Trim

If DataField.Length > 0 Then

ID = "tb_" + DataGroup.ToUpper + Value.ToLower

End If

If DataTitle.Length > 0 Then

DataTitle = DataField

End If

End Set

End Property

Public Property EnabledEncode95() As Boolean

Get

Return varEnabledEncode95

End Get

Set(ByVal Value As Boolean)

varEnabledEncode95 = Value

End Set

End Property

Public Property DataTitle() As String

Get

Return varDataTitle

End Get

Set(ByVal Value As String)

varDataTitle = Value.Trim

If DataTitle.Length = 0 Then

varDataTitle = DataField.ToUpper

End If

End Set

End Property

Public Property ShowOnGrid() As Boolean

Get

Return varShowOnGrid

End Get

Set(ByVal Value As Boolean)

varShowOnGrid = Value

End Set

End Property

Public Property ShowOnSearch() As Boolean

Get

Return varShowOnSearch

End Get

Set(ByVal Value As Boolean)

varShowOnSearch = Value

End Set

End Property

Public Property RegisteredControl() As Boolean

Get

Return varRegisteredControl

End Get

Set(ByVal Value As Boolean)

varRegisteredControl = Value

End Set

End Property

Public Function GetSQLParameterGroup() As SqlClient.SqlParameter()

Dim i As Integer

Dim Count As Integer = 0

Dim MyObj As Object

Dim MyValue As String

Dim sqlparam() As SqlClient.SqlParameter

Dim MySession() As String

Try

For i = 0 To Page.Session.Count - 1

MySession = Page.Session.Item(i).ToString.Split("=")

If Page.Session.Item(i).ToString.IndexOf("=") >= 0 Then

If MySession(1).ToLower = Me.GetType.Name.ToLower Then

MyObj = FindControl(MySession(0))

If MyObj.DataGroup = Me.DataGroup Then

ReDim Preserve sqlparam(i)

If MyObj.EnabledEncode95 Then

MyValue = MyObj.toEncode95Text

Else

MyValue = MyObj.Text.ToString.Trim

End If

sqlparam(i) = New SqlClient.SqlParameter("@" + MyObj.DataField, MyObj.DataType, MyObj.DataLength, MyObj.ParameterDirection, True, 0, 0, "", DataRowVersion.Current, MyValue)

End If

End If

End If

Next

Catch ex As Exception

End Try

Return sqlparam

End Function

Public Function GetParameterString() As String

End Function

Public Function GetCodeBlindString() As String

End Function

Public Function GetListItemString() As String

End Function

#End Region

#Region "Encryption"

Private Function Encode95(ByVal OriginalString As String) As String

End Function

Private Function Encode95(ByVal OriginalString As String, ByVal HeaderKey As Byte) As String

End Function

Private Function Decode95(ByVal EncodeString As String) As String

End Function

Private Function isValidCode95HeaderKey(ByVal EncodeString As String, ByVal HeaderKey As Byte) As Boolean

End Function

Public Function toEncode95Text() As String

Return Encode95(Text)

End Function

Public Sub Encode95Text(ByVal value As String)

Text = Decode95(value)

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

RegisterInitialScript()

If (DecimalMode = True) Or (TextFilter.Length > 0) Then

RegisterDecimalScript()

End If

If Page.IsPostBack Then

If (Text.Length = 0) And (MarkIfEmpty = True) Then

BorderColor = System.Drawing.Color.Red

End If

End If

If Not Font.Name.Length > 0 Then

Font.Name = "Times New Roman"

End If

Hidden()

If Me.ReadOnly Then

ForeColor = System.Drawing.Color.Silver

End If

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

If RegisteredControl Then

Page.Session.Add(ID, ID + "=AdvTextBox")

End If

End Sub

Public Sub Hidden()

If Visible = False Then

Page.RegisterHiddenField(ClientID, Text)

End If

End Sub

End Class

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Indonesia Indonesia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralI refuse Pin
rgiejef21-Mar-05 0:32
rgiejef21-Mar-05 0:32 
GeneralRe: I refuse Pin
Anonymous21-Mar-05 14:44
Anonymous21-Mar-05 14:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.