我有这段代码:
private string getTime(int time)
{
TimeSpan t = TimeSpan.FromSeconds(time);
return string.Format("{0:D2}:{1:D2}", t.Hours, t.Minutes, t.Seconds, t.Milliseconds);
}
稍后在我的应用程序中这部分代码:
dataGridView_Trips.Rows[i].Cells["top_Tijd"].Value = (string)getTime(routeInfo[0]);
无论我尝试将其作为string
投射的方式或内容,一旦它尝试设置Cells["top_Tijd"]
的值,它就会给我一个错误,在这种情况下,{{1}返回一个字符串getTime
并告诉我这不是一个正确的十进制格式?
它试图将它设置为强,但告诉我它不是正确的十进制值,为什么?
Edit1:
尝试添加dataGridView_Trips.Columns [“top_Tijd”]。ValueType = typeof(string);无济于事。
EDIT2:
尝试删除getTime并粘贴在硬编码的“测试”中,并声称即使在设置了它的valuetype之后也需要小数。
Edit3:
以下是格式行为的屏幕截图...(无格式化。)
答案 0 :(得分:2)
我遇到了完全相同的问题:我已经解决了它更改了绑定到dgv列的MS Access数据库列中的值类型。
您无法直接从Visual Studio更改绑定列的类型:如果您的列具有已设置的DataPropertyName,则它是您要更改的Db列的名称。
如果无法编辑数据库,则必须将列的值复制到新的无绑定列中。
答案 1 :(得分:1)
因为"17:46"
不是十进制。您的DataGridView可能将该列定义为Decimal。您应该将其更改为TimeSpan
,String
或更合适的其他内容
答案 2 :(得分:0)
我会做一些不同的事情。首先 - 您要使用的格式为:“h:mm”或“HH:mm”。 其次 - 使用DateTime.ToString(yourFormat)格式化dateTimes。在这里查看文档:{{3}}