GridView DataFormatString问题.将Doudle转换为TimeStamp
本文关键字:转换 TimeStamp Doudle DataFormatString 问题 GridView | 更新日期: 2023-09-27 18:29:27
需要一些关于GridView中DataFormatString的帮助。我有一个Double值,需要显示为TimeSpan。我尝试过DataFormatString="{0:HH:mm:ss}"。这不起作用。
在C#中测试了一下,我会做的:
TimeSpan.FromHours(16.7358217592592).ToString()
这给了我
"16:44:08.9580000"
这就是我所追求的。但是,如何在ASP.Net中实现它是一个大问题。有什么建议吗?
我有一个简单的GridView,看起来像这样。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="sOprTime" HeaderText="Sum OprTime" ReadOnly="True" SortExpression="sOprTime" />
<asp:BoundField DataField="sWorkTime" HeaderText="Sum WorkTime" ReadOnly="True" SortExpression="sWorkTime" />
<asp:BoundField DataField="sFaultTime" HeaderText="Sum FaultTime" ReadOnly="True" SortExpression="sFaultTime" />
</Columns>
<EmptyDataTemplate>
No data is present.
</EmptyDataTemplate>
SQL查询如下所示:
sqlString1 = string.Format(@"SELECT SUM(CONVERT (Float, OprTime)) AS sOprTime, SUM(CONVERT (Float, WorkTime)) AS sWorkTime, SUM(CONVERT (Float, OprTime)) - SUM(CONVERT (Float, WorkTime)) AS sFaultTime FROM tblNovikLogg WHERE (Date_Time > '{0:yyyy/MM/dd H:mm:ss}' And Date_Time < '{1:yyyy/MM/dd H:mm:ss}')", selectedDate, selectedDate.AddDays(1));
您可以在RowDataBound
:中执行此操作
protected void Grid_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var row = ((DataRowView)e.Row.DataItem).Row;
Double sWorkTime = row.Field<Double>("sWorkTime");
TimeSpan ts = TimeSpan.FromHours(sWorkTime);
String formattedTimespan = String.Format(@"{0:hh':mm':ss}", ts);
e.Row.Cells[1].Text = formattedTimespan;
}
}