我有一个网格视图,在网格视图中第5和第6列我只输入数字数据,我的意思是手机号码和地号,
我在gridview_cellvalidating事件中给出了这样的代码
If e.ColumnIndex = 5 Or e.ColumnIndex = 6 Then
Dim i As Integer
If Not String.IsNullOrEmpty(e.FormattedValue) AndAlso Not Integer.TryParse(Convert.ToString(e.FormattedValue), i) Then
e.Cancel = True
MsgBox("Please Enter Numeric")
Else
End If
End If
但如果我只输入10位数字,此代码正常工作,在数据网格视图的第6列中我还要输入国家代码'所以我给的数字是这样的:971563158147。
这个数字超过10位,所以这次显示消息框(“请输入数字”)
我如何解决这个问题?
答案 0 :(得分:0)
当输入数字大于2,147,483,647时,您正在遇到整数的最大值。
您可以使用正则表达式来验证输入或使用Int64.TryParse
。
答案 1 :(得分:0)
如果您只想允许全数字输入,例如12个字符,并且实际上并不关心将其解析为数字,则可以使用正则表达式。伪代码:
Imports System.Text.RegularExpressions
Regex regex = new Regex(@"\d{12}");
If Not String.IsNullOrEmpty(e.FormattedValue) AndAlso Not regex.IsMatch(e.FormattedValue)
这将确保您获得一个非空输入,该输入由12位数字组成。现在,如果你想允许8到12位数,你只需将正则表达式更改为:
Regex regex = new Regex(@"\d{8,12}");
要解决原始查询,971563158147大于Int32
的最大值,因此解析时会出现溢出。这是你错误的根源。
答案 2 :(得分:0)
检查第6个单元格的MaxInputLength,如果该字段为10,则将其更改为所需的长度