我有一個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但爲什麼你需要計算列,爲什麼你想改變它的值?有很多可能的途徑來解決你的問題,但它仍然不清楚究竟是什麼問題。 –