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));

GridView DataFormatString问题.将Doudle转换为TimeStamp

您可以在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;
    }
}