为什么IsNewRow总是返回false?

时间:2017-09-14 09:00:27

标签: c# datagridview

就我而言,我是按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("لا ينبغي ترك حقل السجل المدني فارغاً..!!", "اضافة طالب جديد");
           }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

该行只是新的,直到没有输入任何值。 来自MSDN

  

DataGridViewRow.IsNewRow属性
  获取一个值,该值指示该行是否为新记录的行    ...
  由于新记录的行位于Rows集合中,因此请使用IsNewRow   用于确定行是否是新记录的行或属于的属性   填充行。

     

当行开始输入数据时,行将不再是新行。

答案 1 :(得分:0)

DGV_Students.Rows[e.RowIndex].IsNewRow

总是错误的,因为您遇到事件 CellValidated ,并且您正在评估的行传递了DataRow状态的新状态。