2017-09-14 170 views
0

就我而言,我在currencymanager.AddNew();的基礎上添加了新行。爲什麼IsNewRow總是返回false?

爲什麼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

也許是因爲單元格驗證在它到達'IsNewRow'時完成' –

+0

來自MSDN文章的引用:「當數據輸入行開始時,行停止成爲新行。數據輸入後,CellValidating事件觸發。所以是的,這是保證是錯誤的。這並不明顯,爲什麼你想這樣做。 DGV還允許編輯現有行中的單元格,但您仍然希望驗證該單元格。 –

回答

0

行是新只有等到它一直沒有輸入任何值。 從MSDN

DataGridViewRow.IsNewRow物業
獲取指示該行是否是新的記錄行的值。
...
由於新記錄的行位於Rows集合中,因此請使用IsNewRow 屬性來確定某行是新記錄的行還是填充的行爲 。

當數據輸入行開始時,行停止成爲新行。

+0

謝謝大家.. – yaser95

+0

謝謝大家.. so:當數據錄入行開始時,行停止成爲新行。 但我仍然不知道如何爲新行做到這一點。 – yaser95

0

DGV_Students.Rows[e.RowIndex].IsNewRow

將永遠是假的,因爲你是在事件CellValidated和你正在評估作爲DataRow的狀態通過了新的狀態行。

相關問題