2017-04-13 108 views
0

我有一個從List(TradeReport)數據源填充的數據網格。有一個名爲「TransactTime」的列有Int64數據類型。但是,我想將該列中的每個單元格轉換爲字符串類型。我首先轉換數據類型,然後再將值設置爲它。但是,仍然出現錯誤:DataGridView System.FormatException c#

DataGridView中發生以下異常:System.Exception:7/04/2017 8:30:59 AM對於Int64不是有效的值。怎麼了?

DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc); 

List<TradeReport> tradeList = client.getTradeReports(criteria); 
tradeGridView.DataSource = tradeList; 

foreach (DataGridViewRow row in tradeGridView.Rows) 
{ 
    double time = Convert.ToDouble(row.Cells["TransactTime"].Value); 
    string dts = dt.AddSeconds(time).ToLocalTime().ToString(); 

    row.Cells["TransactTime"].ValueType = typeof(String); 
    row.Cells["TransactTime"].Value = dts; 
} 
+0

似乎錯誤是顯而易見的...你試圖把一個字符串放入一個int值; – JohnG

+0

@JohnG我已經將每個單元格的數據類型轉換爲一個字符串。爲什麼它仍然不接受字符串? –

+0

@JohnG你見過我的代碼嗎?是的,它是一個int,但我在將它插入之前將其轉換爲字符串。 –

回答

0

1.創建一個名爲 'ExtendedTradeReport' 類從TradeReport繼承:

public class ExtendedTradeReport : TradeReport 
{ 
    public string TransactTimeString { get; set; } 
} 

2.Map你的屬性到新類。

3.執行類型轉換。

4.使用的數據源爲您的GridView

5.Hide的TransactTime列。

+0

此解決方案可能有效。感謝那。但是,我不知道我們是否可以用datagridviewcolumn屬性做一些事情,但事實上它不起作用。 –