Cargar datos nuevos en un datagrid que ya tiene info

Tengo problemilla con el datagrid...
Resulta que estoy realizando un programa de recibos de caja, el cual anexa un conjunto de facturas...
El tema es que al grabar el recibo de caja, este queda asociado con las facturas que he chequeado anteriormente.
Al cargar nuevamente el recibo de caja, me aparece en el datagrid las facturas que he asociado anteriormente con toda su información (total, iva, reteiva, etc...)
Al querer editar el recibo y adicionar nuevas facturas en el gridview, es decir que me cargue las nuevas abajo de las que ya tengo asociadas, el primer paso que realizo es:
1. Cuento primero al cargar el Recibo de Caja las facturas que tiene asociadas
i = dgvReciboCaja.Rows.Count
2. Cuento las facturas chequeadas nuevamente:
foreach (DataRowView view clbFacturas.CheckedItems)
{ las facturas chequeadas las lleva a cont }
3. Realizo la siguiente operacion
for(int j = i; j < i+cont; j++)
Si tuviera 2 facturas asociadas anteriormente y de nuevo chequeara otra
El contador empezaría desde 2 hasta 3
Luego cuando intento guardar información en el datagridview a partir de la fila 2 sale el siguiente error específicamente cuando me refiero a indice j que esta en 2
dgvIngresoRecibo.Rows[j].Cells["Total"].Value = lngTotalFactura......
"El indice esta fuera del intervalo, debe ser un valor no negativo e inferior al tamaño de la colección, nombre del parámetro index"
Se supone que debo ingresar la información a partir de la fila 2 porque la 0 y la 1 ya traen datos. Que debo hacer para ingresar más información después de la que se muestra en el datagridview.

1 respuesta

Respuesta
1
Estas tratando de ingresar información en un datagrid sin crear los renglones, tienes que crear primero el renglón de la rejilla:
//Primero creas un renglón, hay varias maneras de hacerlo la más fácil es "clonar" uno
//ya existente.
DataGridViewRow renglon = (DataGridViewRow)dgvReciboCaja.Rows[0].Clone();
row.Cells[0].Value = dato 1
row.Cells[1].Value = dato 2
.
.
//ingresas el renglon a la rejilla
.Rows.Add(row);
Espero haberte ayudado. No olvides cerrar el tema si ya no tienes más dudas.
Hola eyebird, lo que necesito es muy concreto
Tengo un recibo de caja el formulario me muestra:
Facturas Pendientes por cancelar (muestra las facturas en un checklistBox
(/)34567 (/) 35678 () 45678 () 46786... () son los cuadritos del check list
Entonces selecciono las facturas a cancelar del checklistbox y le doy click en el botón adicionar, inmediatamente la información de las facturas chequedas arriba se muestra en un datagridview, por ejemplo:
NroFactura - Total Iva - Total ReteIva - Total Retefuente - Descuentos - total pagar
34567 50000 5000 1500 0 45000
35678 120000 75000 0 0 140000
Y guardo la información, entonces este recibo tiene asociadas las facturas 34567 y la 35678.
Al querer editar e ingresar una nueva factura por ejemplo la 46786 a la listica del datagridview no me deja, me sale este error.
Creo que clonar es cuando uno desea pasar información de un datagrid a otro, pero creo que no entendí bien el concepto, porque lo único que deseo es agregar más información al grid sin borrar lo anterior es decir la información de las facturas 34567 y 35678 y poner debajo la factura 46786.
Como puede ver no necesito crear renglones porque le mando la información de una al datagridview, pero si necesito ingresar las demás facturas en la parte de abajo.
Perdona mi lentitud, pero soy nueva en el manejo de los gridview, muchas gracias.
Por lo pronto voy a tratar de implementar lo que me usted me sugiere, pero en realidad no entiendo mucho.
Bueno según entiendo tienes una lista de checkbox una vez seleccionados los items quieres agregarlos a un datagridview que ya tiene información.
Si es así recuerda que DataGridView es un objeto que contiene colecciones de objetos contiene a columnas y renglones y estos a su vez contienen a Cells.
Es decir son colecciones de colecciones, cuando agregas un objeto a una colección primero debes crear el objeto.
1. RenglonNuevo = objetoTipo Renglon de tipo MiDataGridView.Row.
(Por eso se llama a .Clone() nos devuelve un renglón de tipo datagridview que necesitamos).
2. Llenar con los datos al renglón.
3.Agregar renglón al DataGridview
La colección de DataGridView tiene un tamaño y tu estas intentando agregar datos más allá del limite de la colección, una colección crece dinámicamente al agregarle un objeto pero no DataGridView, tiene que llamarse a su método .Add
Creo que ya entendí, lo único que hay que hacer es crear un objeto tipo Datagridview y adicionarselo al datagrid
Excelente y muy rápida la respuesta, muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas