例如:TableName.ColumnName==Value
。如何获取用户输入的值的数据类型
我有columnName
的数据类型,但值由用户输入, 可以是int/string/datetime或任何值。
我需要检查的列名和价值。代码的数据类型应该两个窗口 和Web应用程序
例如:TableName.ColumnName==Value
。如何获取用户输入的值的数据类型
我有columnName
的数据类型,但值由用户输入, 可以是int/string/datetime或任何值。
我需要检查的列名和价值。代码的数据类型应该两个窗口 和Web应用程序
除非用户告诉你的数据类型是什么工作,你将只能通过以确定它试图解析它到不同的类型,即使这样你也不能保证它正确。
使用在首创置业的int
,double
,DateTime
和其他类型定义的不同TryParse
方法,你可以看到,如果在字符串传递是可分析到以上的这些类型之一。
此时,您需要决定要使用哪种类型...由于您已经知道列的数据类型,因此您可以测试以查看是否可以解析为该类型,如果不是,则拒绝输入。
在所有情况下,该值都将是一个有效字符串(由用户输入),因为这是所有控件的Text
属性的类型。
if (Value is string)
//code to handle
else if (value is int)
//code to handle
等
@ Wegged-由于该值是从文本框中获取的,因此数据类型始终是字符串。 – pKumar 2011-03-17 16:51:17
你的问题不是很清楚,但我猜你正在谈论将一个变量转换为特定类型。
在你的情况,说TableName.ColumnName是一个整数,你会做这样的事情:
string valueByUser = "23"; // Wherever this comes from.
int number = 0;
int.TryParse(valueByUser, out number);
TableName.ColumnName = number;
既然你会知道什么的ColumnName的数据类型,你可以使用相应的TryParse来CONVER价值例如
decimal.TryParse()
DateTime.TryParse()
@Jason-将尝试解析基于列类型的值。 – pKumar 2011-03-17 16:48:12
不应为如何在手解决具体问题的答案,似乎它可以完全通过使上一个更好的设计决策,避免用户输入值到该字段如何。
你说columName
有一个特定的数据类型,但你允许用户在表示层输入任何值?这似乎有代码味道。
您是否可以不在UI层执行某种形式的验证?我想不出任何允许用户输入任何符合特定数据类型的值的实例。我会根据所选的columnName
类型验证输入。
@ cpedros - 我真的不是说那个columnName有一个特定的类型。 Itz,我可以得到用户选择的列的数据类型(基于列名称)。它是用户选择'int'类型列的错误,并尝试使用字符串值来检查它。但想要一种简单的方法来避免异常,从第一阶段中防止异常。 – pKumar 2011-03-17 17:08:06
这是我用:
private string ParseString(string str)
{
bool boolValue;
Int32 intValue;
Int64 bigintValue;
decimal doubleValue;
DateTime dateValue;
// Place checks higher in if-else statement to give higher priority to type.
if (bool.TryParse(str, out boolValue))
return "System_Boolean";
else if (Int32.TryParse(str, out intValue))
return "System_Int32";
else if (Int64.TryParse(str, out bigintValue))
return "System_Int64";
else if (decimal.TryParse(str, out doubleValue))
return "System_Decimal";
else if (DateTime.TryParse(str, out dateValue))
return "System_DateTime";
else return "System_String";
}
每当用户类型的值到一个文本框,它永远是一个字符串。 – 2011-03-17 16:33:26