Tar*_*ryn 3 c# datagridview winforms
我有一个在设置为东部时间的SQL服务器上运行的进程,当它完成的进程时,我们使用完成时间填充表.我有一个目前正被多个应用程序使用的视图,它在不同的列中显示进程的日期/时间,因为其他应用程序正在使用它,我无法更改视图.
我用来返回我的流程数据的查询在下面,并且日期/时间正在转换为服务器端的varchar - 因此它不会作为日期/时间进入UI.
SELECT CONVERT(VARCHAR(10), A2.TaskDateTime, 101) AS TaskDate,
CONVERT(VARCHAR(5), A2.TaskDateTime, 108) AS TaskTime
FROM Task AS T2
JOIN Application_Task AS A2
ON A2.TaskID = T2.TaskID
Run Code Online (Sandbox Code Playgroud)
然后,该数据通过datagridview显示在UI中.我正在尝试将DataGridView中的时间列格式化为我的本地时区,因为用户将位于不同的时区.
我查看了DataGridViewCellStyle.Format并搜索了SO并在转换为本地时发现了这一点,但是它正在解析一个字符串.我似乎无法弄清楚如何将其应用于整个数据列.
我将不胜感激任何帮助和/或方向从何处开始.
我在CellFormatting事件中处理这个:
private void OnCellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0) return;
DataGridView dgView = (DataGridView)(sender);
// no need to add TaskTime...
if (e.ColumnIndex != dgView.Columns["TaskDate"].Index) return;
string cellValue = e.Value + " " + dgView.CurrentRow.Cells[dgView.Columns["TaskTime"].Value);
DateTime dtValue;
DateTime.TryParse(cellValue, out dtValue);
DateTime dtValueUTC = TimezoneInfo.ConvertTimeToUtc(dtValue, "Eastern Time Zone");
e.Value = dtValueUTC.Value.ToLocalTime();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |