Refrescar Datagrid

23/12/2005 - 00:37 por notengo | Informe spam
Hola,

Estoy empezando con esto del c# y tengo una duda. He creado una base de
datos con una clave primaria la cual se autoincrementa. Todos los datos de
esta BBDD los muestro en un datagrid desde el cual puedo añadir o
modificar nuevos registros. Hasta aqui todo perfecto. El problema me viene
cuando voy a añadir un nuevo registro...me aparece la clave primaria en
blanco y no se inserta nada puesto que se va autoincrementando sola pero a
la hora de guardarlo...lo guarda bien y lo autoincrementa en la BBDD pero
en el datagrid me deja en blanco el codigo...me muestra toda la
informacion que acabo de introducir excepto el codigo de la clave primaria
que se ha creado automaticamente y no he tenido q añadir yo. Hay alguna
forma de refrescar el datagrid para que me lo muestre??

Espero haberme expresado con claridad y me sepan ayudar
Muchas gracias
 

Leer las respuestas

#1 Benton
23/12/2005 - 01:46 | Informe spam
La solución tiene que ver con ADO.NET y la dirección de los parámetros de
los comandos que usas.

No das información sobre los objetos de ADO.NET que utilizas, pero
imaginemos que para llenar la tabla que alimenta al grid, usas un
DataAdapter, el cual se sirve de una sentencia SQL para el Select, de una
cadena de conexión (o un object connection), y un command builder le
construye los comandos Insert, Update, y Delete.

Pues bien, cada uno de estos comandos del DataAdapter tiene una colección de
objetos "Parameter", uno para cada campo de la tabla. Una de las propiedades
de estos objetos es "Direction", cuyo valor se les asigna desde la
enumeración ParameterDirection, a saber:

ParameterDirection.Input : Se asume que el valor de ese campo viaja en un
solo sentido, del cliente al servidor.
ParameterDirection.InputOutput : Se asume que el valor de ese campo viaja en
ambos sentidos. Primero del cliente al servidor, y luego regresa del
servidor al cliente, trayendo los cambios que el servidor hizo al campo
después de guardarlo o insertarlo (autoincrementarlo, modificarlo mediante
algun trigger, etc).
ParameterDirection.Output : Se asume que el valor de ese campo viaja en un
solo sentido, del servidor al cliente, después de insertar o modificar un
registro. Util para los campos que del lado cliente son de solo lectura, por
ejemplo.

Conclusión: para que el cliente vea lo que pasó con ese campo en el servidor
después de insertar, la dirección de los parámetros del InsertCommand del
DataAdapter deben ser InputOutput para los campos autoincrementables.

Espero haberte ayudado. Al menos para empezar a investigar. :-)

Saludos,

-Benton


"gerar" escribió en el mensaje
news:
Hola,

Estoy empezando con esto del c# y tengo una duda. He creado una base de
datos con una clave primaria la cual se autoincrementa. Todos los datos de
esta BBDD los muestro en un datagrid desde el cual puedo añadir o
modificar nuevos registros. Hasta aqui todo perfecto. El problema me viene
cuando voy a añadir un nuevo registro...me aparece la clave primaria en
blanco y no se inserta nada puesto que se va autoincrementando sola pero a
la hora de guardarlo...lo guarda bien y lo autoincrementa en la BBDD pero
en el datagrid me deja en blanco el codigo...me muestra toda la
informacion que acabo de introducir excepto el codigo de la clave primaria
que se ha creado automaticamente y no he tenido q añadir yo. Hay alguna
forma de refrescar el datagrid para que me lo muestre??

Espero haberme expresado con claridad y me sepan ayudar
Muchas gracias

Preguntas similares