2012-08-30 38 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将此操作限制到特定的列。您还可以包含需要同时进行计算的任何代码。

;)