例如: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