如何解决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
,则可以添加计算列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。