You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算GridView列中时间值的总和并传递至TextEdit

计算GridView时间列总和并显示到TextEdit的实现方案

嘿,我来帮你搞定这个计算GridView时间列总和并显示到TextEdit的需求!看你提到时间格式是HH:mm.ff(比如22:40、10:30),下面是针对DevExpress WinForms控件的具体实现方案,步骤清晰,还考虑了异常情况哦~

核心思路

  1. 遍历GridView的所有数据行,跳过非数据行(比如分组行)
  2. 提取指定列的时间字符串,过滤空值或无效内容
  3. 将符合格式的时间字符串解析为TimeSpan类型,方便累加计算
  4. 累加所有有效时长,最后把总时长转换为HH:mm.ff格式,赋值给TextEdit控件

代码实现

using System;
using System.Globalization;
using DevExpress.XtraGrid.Views.Grid;

// 初始化总时长为0
TimeSpan totalDuration = TimeSpan.Zero;

// 遍历GridView的所有数据行
for (int rowHandle = 0; rowHandle < gridView1.DataRowCount; rowHandle++)
{
    // 跳过非数据行(比如分组标题行)
    if (!gridView1.IsDataRow(rowHandle))
        continue;

    // 获取指定列的单元格值(替换成你的列字段名,比如"WorkTime")
    object cellValue = gridView1.GetRowCellValue(rowHandle, "TimeColumn");
    if (cellValue == null || string.IsNullOrWhiteSpace(cellValue.ToString()))
        continue;

    string timeString = cellValue.ToString().Trim();
    // 尝试按指定格式解析时间字符串为TimeSpan
    if (TimeSpan.TryParseExact(timeString, @"hh:mm\.ff", CultureInfo.InvariantCulture, out TimeSpan currentTime))
    {
        totalDuration += currentTime;
    }
    else
    {
        // 可选:处理格式错误的情况,比如输出调试日志
        System.Diagnostics.Debug.WriteLine($"行{rowHandle + 1}的时间格式无效:{timeString}");
    }
}

// 将总时长格式化为HH:mm.ff格式,显示到TextEdit
textEdit1.Text = totalDuration.ToString(@"hh\:mm\.ff");

注意事项

  • 替换代码中的gridView1为你的GridView控件实例,"TimeColumn"为实际的列字段名(也可以用列索引,比如gridView1.Columns[2])
  • 如果你的时间格式只有HH:mm(没有毫秒部分),把解析和格式化的格式字符串改成@"HH:mm"即可
  • 若GridView绑定的是自定义实体类,可将gridView1.GetRow(rowHandle)转为实体类型,直接取对应属性值(比如var item = gridView1.GetRow(rowHandle) as YourEntity; string timeStr = item.TimeProperty;)
  • 记得添加必要的命名空间,避免编译错误

这样就能准确计算并展示总时长啦!

内容的提问来源于stack exchange,提问作者Burak Turhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:51:10