功能需求:

有一个学生成绩表,第六列为考试成绩,第七列根据第六列 输入的 数值判断成绩为优、良、中。。等五级制分值,

如果第六列 的 成绩为空,可以填写成绩,如果第六列已经 输入 成绩,则不能修改,

我摸索这也实现了,不知道是否走了弯路,是否有更好 的 办法,

还有一个疑问就是:就是在界面 的 DataGridView 输入 成绩后,如果不在CellValidating中写

gradeDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue;

界面 的 成绩到最后更新 的 时 候就变成空白了,但是五级制分值就有,请高手赐教!!如何实现更高 效 ?

谢谢!


private void gradeDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

{

string strWuFen = "";

try

{

if (e.ColumnIndex == 6)

{

if ( !String.IsNullOrEmpty(e.FormattedValue.ToString()))

{

double dblFenShu = Convert.ToDouble(e.FormattedValue.ToString());

if (dblFenShu < 60)

{

strWuFen = "不及格";

}

else if (dblFenShu >= 60 && dblFenShu < 70)

{

strWuFen = "及格";

}

else if (dblFenShu >= 70 && dblFenShu < 80)

{

strWuFen = "中";

}

else if (dblFenShu >= 80 && dblFenShu < 90)

{

strWuFen = "良";

}

else if (dblFenShu >= 90)

{

strWuFen = "优秀";

}

gradeDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue;

gradeDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex + 1].Value = strWuFen;

//this.Validate();

this.gradeBindingSource.EndEdit();

this.tableAdapterManager.UpdateAll(this.mISDataSet);

}

}

}

catch

{

MessageBox.Show("请 输入 数字");

e.Cancel = true;

}

}

private void gradeDataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

{

if (e.RowIndex >=0 && e.ColumnIndex == 6)

{

if (!String.IsNullOrEmpty(gradeDataGridView[e.ColumnIndex,e.RowIndex].Value.ToString()))

{

e.Cancel = true;

}

}

}