Событие GowView RowsAdded не работает - PullRequest
1 голос
/ 15 июня 2011

У меня есть GridView, который содержит столбцы Код, Опыт, Зарплата, Бонус

Данные для Код , Опыт и Зарплата столбцы взяты из BindingSource, и мне нужно рассчитать данные для Бонус на основе Опыт работы и Зарплата .

Итак, я создал событие RowsAdded для DataGridView и добавил следующий код

int index = employeeBindingSource.Position;
Employee emp = (Employee)employeeBindingSource.Current;
double bonus = (emp.Experience < 4 ? 0.08f : 0.12f) * emp.Salary * 12;
employeeDataGridView.Rows[index].Cells[3].Value = bonus.ToString("0.00"); //setting value for bonus column
employeeBindingSource.MoveNext();

Но я получаю Баунс только для двух рядов.

enter image description here

Поэтому я прокомментировал код внутри этого события и создал другое событие. RowStateChanged добавил вышеуказанный код, и он отлично работает.

enter image description here

В чем проблема с событием RowsAdded? И является ли RowStateChanged правильным событием для расчета столбца бонуса?

Спасибо.

1 Ответ

2 голосов
/ 15 июня 2011

Я думаю, вы движетесь в неправильном направлении.

Было бы проще, но более правильно с точки зрения проектирования добавить дополнительные поля в ваш источник данных.
Если ваш источник данных представляет собой список типизированных объектов, вы можете просто добавить свойство только с помощью getter.

 public decimal Bonus
 {
     get { return (Experience < 4 ? 0.08f : 0.12f) * Salary * 12; }
 }

Если вы используете источник данных DataSet/DataTable, вы можете добавить вычисляемый столбец.

...