В моем 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).
Что я могу сделать?