c# - Convert.ToDateTime DD :HH:mm:ss C#/ASP. 净 GridView RowDataBound

标签 c# asp.net sql date datetime

我的问题的基础是为 ASP.net GridView 控件中的单元格着色。 我有一个在 SQL 中由此生成的绑定(bind)字段

 RIGHT('0' + CONVERT(varchar(6), SUM([Coaching]) / 86400), 2) + ':' + RIGHT('0' + CONVERT(varchar(6), SUM([Coaching]) % 86400 / 3600), 2) + ':' + RIGHT('0' + CONVERT(varchar(2), SUM([Coaching]) % 3600 / 60), 2) + ':' + RIGHT('0' + CONVERT(varchar(2), SUM([Coaching]) % 60), 2) 

据我所知,这不太适合工作,但我的项目规则说我必须以 DD:HH:MM:SS 格式显示。

综上所述,我正在尝试在 C# 中执行一个行数据绑定(bind)事件,以便在超过特定分钟时为单元格着色

    protected void TheGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //this is where we will color the columns

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int CoachingIndex = GetColumnIndexByName(e.Row, "Coaching");
        DateTime CoachingValue = Convert.ToDateTime(e.Row.Cells[CoachingIndex].Text);
        string columnValue = ((Label)e.Row.FindControl("Coaching")).Text;
        if (Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, columnValue)) > Convert.ToDateTime("00:00:40:00"))
        {
            e.Row.Cells[CoachingIndex].BackColor = System.Drawing.Color.Red;
        }            
    }
}
int GetColumnIndexByName(GridViewRow row, string columnName)
{
    int columnIndex = 0;
    foreach (DataControlFieldCell cell in row.Cells)
    {
        if (cell.ContainingField is BoundField)
            if (((BoundField)cell.ContainingField).DataField.Equals(columnName))
                break;
        columnIndex++; // keep adding 1 while we don't have the correct name
    }
    return columnIndex;
}

此转换如果 (Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, columnValue)) > Convert.ToDateTime("00:00:40:00")) 是问题在于我只是想弄清楚如何让它在 C# 中工作,以便我可以进行比较。

任何帮助将不胜感激。

最佳答案

在提供的所有信息能够使其正常工作之后,今天感谢您提供的所有帮助。

 if (e.Row.RowType == DataControlRowType.DataRow)
    {

        int CoachingIndex = GetColumnIndexByName(e.Row, "Coaching");   
        TimeSpan timeStamp;
        string timeStampString = e.Row.Cells[CoachingIndex].Text; // just change the index of cells to get the correct timestamp field
        if (TimeSpan.TryParse(timeStampString, out timeStamp))
        {
            TimeSpan TS = timeStamp;
            int mins = TS.Minutes;
            int hours = TS.Hours;
            int days = TS.Days;
            if (mins > 40 || hours >= 1 || days >= 1)
            {
                e.Row.Cells[CoachingIndex].BackColor = System.Drawing.Color.Red;                    
            }
        }            
    }
}
int GetColumnIndexByName(GridViewRow row, string columnName)
{
    int columnIndex = 0;
    foreach (DataControlFieldCell cell in row.Cells)
    {
        if (cell.ContainingField is BoundField)
            if (((BoundField)cell.ContainingField).DataField.Equals(columnName))
                break;
        columnIndex++; // keep adding 1 while we don't have the correct name
    }
    return columnIndex;
}  

关于c# - Convert.ToDateTime DD :HH:mm:ss C#/ASP. 净 GridView RowDataBound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175687/

相关文章:

SQL向文本添加回车符

ASP.NET MVC3 - ActionResult 将 DotNetOpenAuth WebResponse 呈现为字符串

c# - .NET 隔离存储文件锁定引发 NRE

c# - 尝试应用良好的依赖注入(inject)实践时遇到的问题

c# - 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

c# - 如何在 ASP.NET 中强制发生 HTTP 错误?

c# - AutoEventWireup 和 base.OnLoad(e) 调用 Self 导致 Stack Overflow

MySQL 获取当年季度 (QTD) 1,2,3,4

sql - SSIS 中的别名参数

c# - int 的反向二进制表示(仅有效位)