Как рассчитать значение несвязанного столбца на основе значения связанного столбца в DatagGridView? - PullRequest
1 голос
/ 27 мая 2010

В моем 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, и я не могу предварительно вычислить значение e.Value в любом вызове SQL. В реальном примере Cells [2] .Value - это ключ, используемый в HashTable, который будет возвращать правильное значение для Cells [0] (e.Value).

Что я могу сделать?

1 Ответ

0 голосов
/ 27 мая 2010

Вы должны быть избирательны и действовать только в колонке 0:

//untested
private void dgvItems_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
  if (e.Column == 0)
  {
     e.Value = dgvItems.CurrentRow.Cells[2].Value * 5; //simplified example
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...