Autor
|
Tema: Borrar fila en Datagrid en c# (Leído 13,253 veces)
|
zapala76
Desconectado
Mensajes: 48
|
Hola, como estan? Querá saber si alguien me podria ayudar para borrar filas en un datagrid, el tema es el siguiente, lleno un datagrid desde una DB con cuatro filas, y tengo que borrar tres, pero al querer borrar la tercer fila me sale un error de que el indice esta fuera de rango, ya que el datagrid se redimensiona, y al borrar la segunda fila el datagrid de 4 filas en un principio pasa a tener dos, por lo que no se puede borrar la tercer fila que yo quiero boorar y por eso me sale el error de fuera de indice. Espero haberme explicado bien y gracias de antemano.-
|
|
|
En línea
|
|
|
|
4rkn63l
Desconectado
Mensajes: 199
|
Bueno, conozco dos formas de eliminar filas de un datagrid, la primera es seleccionar la fila a eliminar y presionar la tecla suprimir, y la otra es mediante codigo que mas o menos el procedimiento seria recuperar el indice de la fila actualmente seleccionada y eliminarla con el metodo RemoveAt de la coleccion Rows del datagrid. El problema puede estar en que al momento de eliminar x fila ya sea de la primera manera o la segunda no exista una fila seleccionada.
Algo importantisimo a tomar en cuenta es que si los datos del datagrid estan enlazados a una tabla de una base de datos deberas eliminar la fila en la tabla de la bases de datos y luego actualizar el datagrid.
|
|
|
En línea
|
|
|
|
zapala76
Desconectado
Mensajes: 48
|
Gracias por responder, y aprovecho para comentar que el datagrid esta enlazado a una DB, los datos de la BD los pngo e un BindingList y de ahi lleno el datagri, pero en dicho datagrid no quiero sacar filas seleccionadas, sino filas que cumplan cierta condicion, por eso no quiero borrar las filas de la BD.
Otra opcion que me serviria es pasar los datos que cumplan la condicion a un segundo datagrid. Igualmente muchas gracias por el tiempo y saludos.-
|
|
|
En línea
|
|
|
|
4rkn63l
Desconectado
Mensajes: 199
|
Si lo que quieres es filtrar datos, podrias formar la consulta incluyendo una clausula where con la condicion que te interesa, enviarla a la base de datos y el resultado volcarlo en el datagrid. O para evitar muchas peticiones al servidor puedes hacer un "select *" de la tabla que contiene los datos, almacenar permanentemente el resultado en un datatable por ejemplo y luego recorrer las filas de ese datatable y si x fila cumple con la condicion entonces agregarla al datagrid. Obviamente cada vez que filtres datos antes deberias de limpiar el datagrid para que solo queden las filas que te interesan.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
... lleno un datagrid desde una DB con cuatro filas, y tengo que borrar tres, pero al querer borrar la tercer fila me sale un error de que el indice esta fuera de rango, ya que el datagrid se redimensiona ...
Ya tienes la(s) solucion(es) que son bastantes obvias!¡. Te dejo los codigos en C++/CLI (usando .NET)... lo podras transpasar a C# demasiado facil. 1.- Elimina restando el numero de filas eliminadas al indice a eliminar, si realizas cuentas este "indice" SIEMPRE te dara "0"... el codigo por obvias razones sera: while(this->gridCalendar->SelectedRows->Count > 0) this->gridCalendar->Rows->Remove(this->gridCalendar->SelectedRows[0]);
2.- Empiesa a eliminar la fila por el ultimo indice... de la coleccion de Filas seleccionadas... while(this->gridCalendar->SelectedRows->Count > 0) this->gridCalendar->Rows->Remove(this->gridCalendar->SelectedRows[this->gridCalendar->SelectedRows->Count - 1]);
3.- for each...NOTA: Para actualizar los cambios puedes dejar de lado TODAS las instrucciones SQL realizando un simple update del DataTable... Dulces Lunas!¡.
|
|
« Última modificación: 22 Enero 2012, 10:41 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
zapala76
Desconectado
Mensajes: 48
|
Gracias por las respuestas y de paso pongo lo que use para solucionar el problema:
t = 0; for (int f = 0; f < cun; f++) { int pru = Convert.ToInt16(dgv_herma_Examen.Rows[f].Cells["idtitular"].Value); string capo = dgv_herma_Examen.Rows[f].Cells["Exa_pagado"].Value.ToString(); if (capo == "Si") { dgv_herma_Examen.Rows.RemoveAt(f); f = f - 1;
} t++; if (t == cun) { f = t; } } "cun" es la cantidad de filas que tiene el datagrid, lo demas creo que se entiende, gracias y saludos.-
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
fila impar, un color, fila par, otro color...
PHP
|
Luisango
|
5
|
5,427
|
25 Marzo 2007, 12:23 pm
por дٳŦ٭
|
|
|
Fila fija en DataGridView
.NET (C#, VB.NET, ASP)
|
elmaro
|
8
|
13,965
|
20 Agosto 2009, 17:09 pm
por Hadess_inf
|
|
|
Eliminar Fila de un Datagrid View usando valor de un inputbox
.NET (C#, VB.NET, ASP)
|
syaoran
|
1
|
5,049
|
23 Abril 2008, 06:24 am
por rain_in!the!_universe
|
|
|
borrar fila conociendo primer palabra de la fila(solucionado)
Scripting
|
flony
|
3
|
5,422
|
27 Noviembre 2009, 18:25 pm
por leogtz
|
|
|
Seleccionar fila en un datagrid y modificar la seleccion en otro form
.NET (C#, VB.NET, ASP)
|
RichardBoy
|
0
|
5,441
|
12 Febrero 2010, 22:42 pm
por RichardBoy
|
|