如何根据DatagridView中绑定列的值计算未绑定列值?

时间:2010-05-27 18:56:57

标签: c# recursion datagridview

我的DataGridView中有几列,其中一列是未绑定列,DataGridVIew位于VirtualMode中。

调用CellValueNeeded事件时,我想根据Cells[0]的值来计算Cells[2]的值,该值位于有限列中DataSource

这就是我尝试这样做的方式:

private void dgvItems_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
  e.Value = dgvItems.CurrentRow.Cells[2].Value * 5; //simplified example
}

但是,我收到System.StackOverflowException,因为它调用dgvItems.CurrentRow.Cells[2].Value会导致调用另一个CellValueNeeded事件。等等......然而,Cells [2]不是一个未绑定的列,所以在常识上它不应该导致递归调用,除非获取任何列的值(绑定或未绑定)触发该事件...

我不能在这里使用SQL Expression,我无法在任何SQL调用中预先计算e.Value。在实例中,Cells [2] .Value是HashTable中使用的一个键,它将返回Cells [0](e.Value)的正确值。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您需要具有选择性并仅对第0列采取行动:

//untested
private void dgvItems_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
  if (e.Column == 0)
  {
     e.Value = dgvItems.CurrentRow.Cells[2].Value * 5; //simplified example
  }
}