GridView的“行添加”事件不起作用

问题描述

| 我有一个GridView,其中包含代码,经验,薪水,奖金列 “代码”,“经验”和“薪金”列的数据来自ѭ0need,我需要根据“经验和薪金”来计算“奖金”数据。 所以我为
DataGridView
创建了
RowsAdded
事件,并添加了以下代码
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();
但是我只有两行得到Bouns。 所以我注释了此事件中的代码,并创建了另一个事件
RowStateChanged
添加了以上代码,它工作正常。
RowsAdded
事件有什么问题?
RowStateChanged
是计算奖金栏的正确事件吗? 谢谢。     

解决方法

        我认为您的方向错误。 从设计的角度来看,向数据源添加额外的字段会更容易,但更正确。 如果数据源是类型化对象的列表,则可以仅使用getter添加属性。
 public decimal Bonus
 {
     get { return (Experience < 4 ? 0.08f : 0.12f) * Salary * 12; }
 }
如果数据源为
DataSet/DataTable
,则可以添加计算列。