我有一个datagridview已使用datasource属性从数据表中填充。我需要更改单元格的值而不影响数据库。到目前为止,我只能发现我必须首先更改数据绑定项目,但没有关于如何做到这一点的信息。此外,我不想更改数据绑定项目。vb.net更改数据绑定中的单元格的值datagridview
想要做到这一点的原因是,我有一个开始和结束时间的记录列表,并有一个计算字段,以秒为单位给出差异。我需要更改计算字段的值并相应地更改行的高度,也就是说,每行的高度与其表示的持续时间成比例。如果“增加”按钮保持关闭状态,文本框会快速增加更改,因此我无法用每个增量更改数据库。相反,我会经常更改表中的值,并在增量停止后更新数据库。
我曾尝试直接使用此代码更新的datagridview:
dgvTasks.Rows(SelectedRowIndex).Cells(5).Value = DateAdd(DateInterval.Minute, DateDiff(DateInterval.Minute, CDate("00:00:00"), CDate(txtDuration.Text & ":00")), dgvTasks.Rows(SelectedRowIndex).Cells(4).Value)
但收到错误消息:
System.Data.ReadOnlyException: Column 'Column1' is read only.
我也尝试过更新的数据表,并允许计算列更新:
dtblTasks.Rows(SelectedRowIndex)(5) = DateAdd(DateInterval.Minute, DateDiff(DateInterval.Minute, CDate("00:00:00"), CDate(txtDuration.Text & ":00")), dtblTasks.Rows(SelectedRowIndex)(4))
dgvTasks.DataSource = dtblTasks
但是计算值没有变化。
,我还提供了一个额外的计算值(在SQL),我发现在几分钟内一个字串的差异,追加:
(CAST (DATEDIFF(MINUTE, Tasks.TaskStart, Tasks.TaskEnd) AS NVARCHAR(10)) + ' mins') AS TaskDurationString
有没有一种方法来分离从电网数据源,但仍然保持数据可见的数据网格和操纵它(不影响数据绑定对象)?或者也许还有其他解决这个问题的方法?
你想要什么变化的确切种类做什么呢?将转换应用于datagridview中的显示值而不更改基础数据源非常简单。没有办法“断开”数据源并保持数据显示在网格中。但是,您可以简单地将一个未绑定的网格复制到代码中的数据表中。最后,最简单的方法是更新数据表 - 为什么你不能这样做?您不必将对数据表的更改保存回数据库。 –
这是当我尝试使用以下命令更改单元格内容时出现的错误:DataGridView1.Rows(1).Cells(0).Value =“test”linkdl.dropbox.com/u/60390967/ LANThrax/error.jpg 我刚刚意识到,如果我尝试更改连接到单个字段的单元格的内容,它就可以工作。但是,如果我尝试更改其值为其他字段组合的结果的单元格,例如“(FirstName + LastName)”,则会给出该错误。 – Osprey
嗯,不会工作 - 数据表中的计算列是只读的,没有办法解决这个问题。 http://msdn.microsoft.com/en-us/library/ms810291.aspx但为什么你需要计算列,为什么你想改变它的值?有很多可能的途径来解决你的问题,但它仍然不清楚究竟是什么问题。 –