2012-08-30 73 views
1

我們正在使用綁定到數據庫的DataGridView。我們試圖將其中一列計算爲數據庫中某些其他列的平均值。在行更改前提交DataGridView中的更改

    • 我們無法在數據庫中創建一個計算列也不是我們成功地創造一個數據集中。如果有辦法做到這一點,我們的問題就解決了。

例:AvgSkill = AVG(Skill1,Skill2,Skill3)

  1. 由於我們似乎無法創建一個計算列,我們試圖建立一個細胞事件處理程序,將計算新的平均值,然後用新信息更新數據庫,但只要我們更改單元格並嘗試更新數據庫,就會丟失添加到該行的所有數據。

我們已經知道dataGridView只會在離開該行時更新綁定的數據源,所以當我們嘗試執行更新時,它會擦除​​在該行中輸入的任何內容。

有沒有辦法強制datagridview更新我們的事件處理程序中綁定的數據源,然後離開該行?更新tableadapter似乎沒有做到這一點。

在此先感謝您的幫助:)

-Dominique

+0

爲什麼你不能計算數據庫中的平均值?這似乎是一個低效率的解決方法,當你應該*能夠完成數據庫中的所有工作時。它是什麼類型的數據庫? – CoderMarkus

+0

簡單的解決方案只有在您準備好讓您的datagridview解除綁定並在formalod或構造函數中對其進行綁定時纔有可能。這也可以引導。 – Sami

+0

@TrueDevelopment數據庫是一個SQL服務器的緊湊型數據庫。 – Dominique

回答

1

我想你想做的事在小區改變事件處理程序如下:

private void dgvPlayers_CellValidated(object sender, DataGridViewCellEventArgs e) 
    { 
     this.Validate(); 
    } 

部隊DataGridView中的驗證隨着每個細胞的變化。您可以通過檢查e.ColumnIndex將此操作限制到特定的列。您還可以包含需要同時進行計算的任何代碼。

;)