with winform net example ejemplos databinding databind data .net winforms datagridview

.net - winform - Cómo establecer "insertar nueva fila" como primera fila en DataGridView



fill datagridview c# with list (7)

¿Estás consumiendo el evento RowDataBound? De ser así, podría verificar si está vinculando la fila de encabezado de columna y luego agregar el código apropiado para insertar una fila justo debajo de esa.

De esa manera, cuando sus filas de contenido están vinculadas, no hay confusión con los índices de elementos involucrados, aunque recomendaría el uso de algunas DataKeys o algo por las dudas. Además, el uso del evento RowDatabound le permitiría tener una "fila de inserción" disponible cuando el usuario páginas a un bloque diferente de filas en el GridView.

Estoy intentando que DataGridView represente la fila "insertar nueva fila" como la primera fila en la cuadrícula en lugar de la última fila. ¿Cómo hago eso? ¿Es posible incluso en el control?


¿Puedes asignar un valor temporal a la clave de la nueva fila que sea menor que todas las filas existentes? Luego, clasifique un DataView por esa clave y vincule la vista a su cuadrícula.

Mi equipo usa números negativos como identificadores de fila hasta que esa fila se haya insertado en la base de datos. No recuerdo que nuestras nuevas filas aparezcan en la parte superior, pero tampoco tenemos eso como un requisito.


Como dijo While-E, use Insert lugar de Add . De esta manera puede especificar dónde desea agregar el nuevo registro. Para agregar un nuevo registro en la parte superior de la cuadrícula, simplemente use Insert(0) .

DataGridView1.Rows.Insert(0) Esto agregará un nuevo registro en la parte superior, siempre

DataGridView1.Rows(0).Cells(n).Value = "abc" esto establecerá el valor en n columna


No creo que haya ninguna forma de mover la fila "nueva fila" a la parte superior de la cuadrícula de datos.

Pero, ¿qué pasa si deja la fila superior vacía y cuando los datos se llenan, mueva la fila hacia abajo según corresponda? En otras palabras, crea tu propia fila de "nueva fila", que es solo la primera fila en la grilla y agrega nuevas filas en blanco arriba cuando finaliza la edición.

Dim myrow = existingDataTable.NewRow existingDataTable.Rows.Add(myrow) adp.Fill(existingDataTable) With DataGridView1 .DataSource =existingDataTable End With


Si no está utilizando controles enlazados, dgvItems.Rows.Insert () le permitirá especificar dónde se inserta la fila.

Si está utilizando una vista de cuadrícula de datos enlazada, sin una clasificación activa, agregue la nueva fila a la fuente de datos en la ubicación deseada:

BoundTable.Rows.InsertAt (BoundTable.Rows.NewRow (), RowLocation);

He encontrado una relación interesante, si hay ediciones en la fila actual y la fila no se ha comprometido con la fuente de datos (es decir, acaba de comenzar a ingresar los datos), parece ser necesario mover la celda activa a otra fila para confirmar los cambios antes de insertar filas.


Supongo que quiere decir que cuando quiera agregar una nueva fila, ¿quiere que la fila se inserte realmente en la parte superior de la tabla en lugar de la parte inferior de la tabla como por defecto? Bueno, si esto es así, no tiene que lidiar con clasificación o valores clave; simplemente hazlo como tal con el método Insertar:

''Crea una nueva fila

Dim tmpRow = New DataGridViewRow

''Ajuste la fila de alguna manera

tmpRow.Height = _cellRectSize

''Agregue la fila a DataGridView (es decir, dgvEditor) en la parte superior (índice = 0)

Me.dgvEditor.Rows.Insert (0, tmpRow)

Funciona como un encanto para mí, ¡espero que ayude a alguien más!


Y si todo lo demás falla, la forma más chistosa sería colocar una línea DataGridView separada por encima de la existente, clonar sus columnas y vincular el evento de envío de fila para agregar los datos al inferior :)