elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  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 10,346 veces)
zapala76

Desconectado Desconectado

Mensajes: 48


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

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: 199



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

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: 48


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

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: 199



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

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: 3.142


I'Love...!¡.


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

...
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
  1. while(this->gridCalendar->SelectedRows->Count > 0)
  2. this->gridCalendar->Rows->Remove(this->gridCalendar->SelectedRows[0]);
  3.  

2.- Empiesa a eliminar la fila por el ultimo indice... de la coleccion de Filas seleccionadas...
Código
  1. while(this->gridCalendar->SelectedRows->Count > 0)
  2. this->gridCalendar->Rows->Remove(this->gridCalendar->SelectedRows[this->gridCalendar->SelectedRows->Count - 1]);
  3.  

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




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

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

Desconectado Desconectado

Mensajes: 48


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

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:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines