elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:33  


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderador: [D4N93R])
| | | |-+  Borrar fila en Datagrid en c#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Borrar fila en Datagrid en c#  (Leído 1,078 veces)
zapala76

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Borrar fila en Datagrid en c#
« en: 22 Enero 2012, 03:58 »

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 Desconectado

Mensajes: 197



Ver Perfil
Re: Borrar fila en Datagrid en c#
« Respuesta #1 en: 22 Enero 2012, 04:53 »

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 Desconectado

Mensajes: 44


Ver Perfil
Re: Borrar fila en Datagrid en c#
« Respuesta #2 en: 22 Enero 2012, 06:09 »

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 Desconectado

Mensajes: 197



Ver Perfil
Re: Borrar fila en Datagrid en c#
« Respuesta #3 en: 22 Enero 2012, 08:02 »

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 (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.830


I'Love...!¡.


Ver Perfil WWW
Re: Borrar fila en Datagrid en c#
« Respuesta #4 en: 22 Enero 2012, 10:08 »

...
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:
Código
	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...
Código
	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 por BlackZeroX (Astaroth) » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
zapala76

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: Borrar fila en Datagrid en c#
« Respuesta #5 en: 28 Enero 2012, 04:10 »

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines