Comportamiento de System.Windows.Forms.Datagrid

13/02/2004 - 11:03 por Manuel Cobo | Informe spam
Saludos a todos.

Estoy en una aplicación Windows y quiero meter en un
formulario un Datagrid con datos de una tabla.

Quisiera saber cuál es la mejor forma de actualizar,
insertar, eliminar a partir de ese datagrid. Se me
plantean dos opciones:

1. De alguna forma, al pulsar sobre una fila del datagrid
abriría una ventana modal (ShowDialog) en la que podría
modificar los valores o eliminarlos.

Habría también un botón Insertar o Añadir que abriría una
ventana modal para insertar nuevos datos.

El problema sería luego refrescar el datagrid de la
ventana padre.

2. Hacer todos los cambios de forma desconectada o algo
así. He leído algo sobre el tema pero no sé exactamente
cómo, hay DataViews, DataViewManager, pero no tengo claro
la distinción.
Cómo se podrían actualizar los cambios producidos en el
datagrid a la base de datos ?

Si decido optar por el modo desconectado, se me plantean
varios problemas.
Qué pasaría si hubiera muchísimas filas ? Existe algo
como la paginación como en Web ?

Otro problema sería que para la tabla hubiese muchos
campos y no sería bueno mostrar todos, entonces no se
puede modificar cada fila en el datagrid, no?.

En fin, ojalá alguien experto me pueda aclarar todas
estas dudas y si conoce alguna referencia o algún ejemplo
con código que me sirva se lo agradeceré.

Saludos.
 

Leer las respuestas

#1 Crosio, Pablo
14/02/2004 - 08:13 | Informe spam
Manuel:

Si no traés gran cantidad de datos en la grilla (por ejemplo el detalle de
un pedido que hay que modificar), a mi criterio lo más conveniente es
realizar las actualizaciones localmente. Lo que actualizarías en realidad
es el DataTable (o DataView) asociado a la grilla. Luego deberías coordinar
como bien decís las actualizaciones en el motor de base de datos podés
consultar por el método Update de la clase DataAdapter que es lo que se
utiliza para ello

Con respecto a si hubiera muchsimas filas pues no seria conveniente
mostrarlas todas en la grilla pues deberias traer todos los datos al
cliente si bien en Web existe paginacion, basicamente la grilla trabaja
igual, es decir, pagina pero sobre los datos que hayas traido al cliente (en
este caso a la capa de presentacion en el servidor)...

Si no queres mostrar todos los campos en la grilla, tenes la alternativa de
traerlos todos pero a traves de los estilos mostrar los que necesites.

Si vas a trabajar actualizando directamente en el motor de base de datos
pues no te queda otra que refrescar el DataTable (DataSet) asociado a la
grilla luego de realizar las actualizaciones.. (pero me quedo con la
primera forma)

Espero haberte ayudado

Salu2!!

Pablo




"Manuel Cobo" wrote in message
news:f35201c3f218$9cefbd40$
Saludos a todos.

Estoy en una aplicación Windows y quiero meter en un
formulario un Datagrid con datos de una tabla.

Quisiera saber cuál es la mejor forma de actualizar,
insertar, eliminar a partir de ese datagrid. Se me
plantean dos opciones:

1. De alguna forma, al pulsar sobre una fila del datagrid
abriría una ventana modal (ShowDialog) en la que podría
modificar los valores o eliminarlos.

Habría también un botón Insertar o Añadir que abriría una
ventana modal para insertar nuevos datos.

El problema sería luego refrescar el datagrid de la
ventana padre.

2. Hacer todos los cambios de forma desconectada o algo
así. He leído algo sobre el tema pero no sé exactamente
cómo, hay DataViews, DataViewManager, pero no tengo claro
la distinción.
Cómo se podrían actualizar los cambios producidos en el
datagrid a la base de datos ?

Si decido optar por el modo desconectado, se me plantean
varios problemas.
Qué pasaría si hubiera muchísimas filas ? Existe algo
como la paginación como en Web ?

Otro problema sería que para la tabla hubiese muchos
campos y no sería bueno mostrar todos, entonces no se
puede modificar cada fila en el datagrid, no?.

En fin, ojalá alguien experto me pueda aclarar todas
estas dudas y si conoce alguna referencia o algún ejemplo
con código que me sirva se lo agradeceré.

Saludos.

Preguntas similares