IsNewRow

23/08/2008 - 23:12 por Pedro | Informe spam
Estoy programando el evento cellparsing del datagridview y necesito
preguntar si estoy en una fila nueva pero la propiedad IsNewRow de la fila
siempre me devuelve false.

Cuando se supone que deberia devolver true ?
 

Leer las respuestas

#1 SoftJaén
21/09/2008 - 20:35 | Informe spam
"Pedro" escribió:

Estoy programando el evento cellparsing del datagridview y necesito
preguntar si estoy en una fila nueva pero la propiedad IsNewRow de
la fila siempre me devuelve false.

Cuando se supone que deberia devolver true ?



Hola, Pedro:

La propiedad «IsNewRow» devuelve el valor true cuando se ha añadido una
nueva fila al control DataGridView, es decir, cuando se comienza a escribir
en la fila de nuevos registros, que se supone que es la fila anterior a
aquella en la que aparece un asterisco en su encabezado de la fila. Pero si
las filas ya están añadidas al control DataGridView, dicha propiedad siempre
te devolverá el valor false. Igualmente también devolverá false si ya has
escrito algún dato en alguna de las celdas de la nueva fila y has cambiado a
otra columna de la misma fila.

La propiedad «IsNewRow» mayormente se utiliza para eliminar filas YA
EXISTENTES mediante una llamada al método «Remove» de la colección «Rows»
del objeto DataGridView, de tal manera que si el valor es false se pueda
eliminar la fila sin producir una excepción, cosa que sucedería si se
intenta eliminar una nueva fila que todavía no está incluida en la colección
«Rows».

Como dices que estás trabajando en el evento «CellParsing», siempre que el
control DataGridView se encuentre enlazado a un objeto DataTable, puedes
hacer una comparación con el número de filas existentes en el control
DataGridView y el número de filas existentes en el objeto DataTable. Si hay
más filas en el objeto DataGridView, se puede entender que se trata de una
nueva fila, la cual se añadirá al objeto DataTable cuando cambies de fila en
el control DataGridView:

private void dataGridView1_CellParsing(object sender,
DataGridViewCellParsingEventArgs e)
{
DataTable dt = (DataTable)this.dataGridView1.DataSource;
if (this.dataGridView1.Rows.Count - 1 > dt.Rows.Count)
{
MessageBox.Show("Es una nueva fila");
}
else
{
MessageBox.Show("No es una nueva fila");
}
}

Le quito una unidad al número total de filas del objeto DataGridView, porque
se supone que el valor de la propiedad «AllowUserToAddRows» es true, es
decir, que se le permite al usuario escribir en la fila de nuevos registros
para añadir nuevas filas al control DataGridView, que será cuando únicamente
el valor de la propiedad «IsNewRow» será true.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares