就我而言,我是按currencymanager.AddNew();
添加新行。
为什么IsNewRow
始终返回false
?:
private void DGV_Students_CellValidated(object sender, DataGridViewCellEventArgs e)
{
if (DGV_Students.Rows[e.RowIndex].IsNewRow)
{
if (DGV_Students.Columns[e.ColumnIndex].Name == "student_id")
{
DataTable dt = new DataTable();
dt = Verify.VerifyStudentID(DGV_Students.Rows[e.RowIndex].Cells[0].Value.ToString());
if (dt.Rows.Count > 0)
{
DGV_Students.Rows[e.RowIndex].ErrorText = "هذا الطالب مسجل مسبقا ..!!";
MessageBox.Show("هذا الطالب مسجل مسبقا ..!!", "اضافة طالب جديد");
}
else if (DGV_Students.Rows[e.RowIndex].Cells[0].Value == DBNull.Value)
{
DGV_Students.Rows[e.RowIndex].ErrorText = "لا ينبغي ترك حقل السجل المدني فارغاً..!!";
MessageBox.Show("لا ينبغي ترك حقل السجل المدني فارغاً..!!", "اضافة طالب جديد");
}
}
}
}
答案 0 :(得分:0)
该行只是新的,直到没有输入任何值。 来自MSDN:
DataGridViewRow.IsNewRow属性
获取一个值,该值指示该行是否为新记录的行 ...
由于新记录的行位于Rows集合中,因此请使用IsNewRow 用于确定行是否是新记录的行或属于的属性 填充行。当行开始输入数据时,行将不再是新行。
答案 1 :(得分:0)
DGV_Students.Rows[e.RowIndex].IsNewRow
总是错误的,因为您遇到事件 CellValidated ,并且您正在评估的行传递了DataRow状态的新状态。