【发布时间】:2014-05-25 23:42:51
【问题描述】:
我正在使用 LINQ 将 SQL 数据库中的对象填充到 DataGridView 中。我有一列需要一个不断运行的秒表来显示自从添加条目以来的时间,但是,许多客户将从这个数据库中提取,我不想为了检索我已经可以检索的值而不断查询数据库计算。例如,这就是 DGV 的样子:
由于我已经查询了“开始日期时间”,因此应该有一种方法可以通过计时器简单地增加“持续时间”字段,而无需在网络上一遍又一遍地移动所有不必要的数据。
有没有办法在将 DataSource 链接到其他列的数据库时以编程方式处理单个列?
更新 [5/28/14 下午 5:23 CT]:
如果有帮助,这里是绑定数据源的代码(“持续时间”未绑定):
private void IncidentsModule_Load(object sender, EventArgs e)
{
incidentList.DataSource = model.GetOngoingIncidents().Select(i => new {
Name = i.Name,
SHDTicket = i.SHDTicket,
StartDateTime = i.StartDateTime
}).ToList();
}
这是基于 TaW 输入的计时器的当前代码:
private void incidentDurationTimer_Tick(object sender, EventArgs e)
{
foreach (DataRow dr in incidentList.Rows)
{
dr[IncidentDurationColumn.Index] = DateTime.Now.Second;
}
}
【问题讨论】:
-
是的,您可以将未绑定的列添加到数据绑定
DataGridViews:msdn.microsoft.com/en-us/library/zkatshfa%28v=vs.90%29.aspx -
@adv12 啊,有道理。但是如何在网格不重新填充其他列的情况下更新“持续时间”列?现在它正在刷新所有内容并导致选择重复移动到 0 索引行。
标签: c# sql .net linq datagridview