Advance Textbox Web Component






1.88/5 (5 votes)
Mar 21, 2005
12 min read

34020

389
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 ([email protected] / [email protected])
'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 Thenmystr += getmark()
Elsemystr += 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 Elsemyhasil = 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) Thenpos = i
End If If myvalue.Chars(i) = "-" Thennegatif = "-"
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 Elsehasil = myvalue
End If If ekstensi = "" Thenekstensi = "0"
End If If hasil.Length > 1 Thenhasil = reversestring(hasil)
For i = 0 To hasil.Length - 1selesai += hasil.Chars(i)
If (i + 1) Mod 3 = 0 Then If (i < (hasil.Length - 1)) Thenselesai += 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") ThenPage.RegisterStartupScript("InitialScript", MyScript)
End If End Sub Private Sub RegisterDecimalScript() Dim MyScript, DateFormat As StringMyScript = ""
MyScript &= "<Script>" & vbCrLf
'Get character positionMyScript &= "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 stringMyScript &= "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 NumericMyScript &= "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 stringMyScript &= "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 LeftMyScript &= "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 &= "}" & vbCrLfMyScript &= "</Script>" & vbCrLf
If Not Page.IsStartupScriptRegistered("CurrencyVerification") ThenPage.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 ThenLowerCase =
FalseNumericMode =
FalseDecimalMode =
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 ThenUpperCase =
FalseNumericMode =
FalseDecimalMode =
FalseAttributes.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 ThenPropertyOn("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 ThenPropertyOn("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 ThenPropertyOn("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" ThenUpperCase =
False End If If Not ActiveProperty.ToLower = "lowercase" ThenLowerCase =
False End If If Not ActiveProperty.ToLower = "numericmode" ThenNumericMode =
False End If If Not ActiveProperty.ToLower = "textfilter" ThenTextFilter = ""
End If If Not ActiveProperty.ToLower = "decimalmode" ThenDecimalMode =
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 ThenID = "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 ThenID = "tb_" + DataGroup.ToUpper + Value.ToLower
End If If DataTitle.Length > 0 ThenDataTitle = 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 ThenvarDataTitle = 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 - 1MySession = Page.Session.Item(i).ToString.Split("=")
If Page.Session.Item(i).ToString.IndexOf("=") >= 0 Then If MySession(1).ToLower = Me.GetType.Name.ToLower ThenMyObj = FindControl(MySession(0))
If MyObj.DataGroup = Me.DataGroup Then ReDim Preserve sqlparam(i) If MyObj.EnabledEncode95 ThenMyValue = MyObj.toEncode95Text
ElseMyValue = MyObj.Text.ToString.Trim
End Ifsqlparam(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.LoadRegisterInitialScript()
If (DecimalMode = True) Or (TextFilter.Length > 0) ThenRegisterDecimalScript()
End If If Page.IsPostBack Then If (Text.Length = 0) And (MarkIfEmpty = True) ThenBorderColor = System.Drawing.Color.Red
End If End If If Not Font.Name.Length > 0 ThenFont.Name = "Times New Roman"
End IfHidden()
If Me.ReadOnly ThenForeColor = 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 ThenPage.Session.Add(ID, ID + "=AdvTextBox")
End If End Sub Public Sub Hidden() If Visible = False ThenPage.RegisterHiddenField(ClientID, Text)
End If End SubEnd
Class