Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Eliminar objeto de un BindingList (http://www.forosdelweb.com/f29/eliminar-objeto-bindinglist-548029/)

matiassaitam 14/01/2008 11:26

Eliminar objeto de un BindingList
 
Buenas,

Esta es la situación: tengo un DataGridView que tiene como DataSource un BindingList con una clase personalizada que yo hice.
Esto se muestra perfecto.

Lo que quiero hacer ahora es colocar un botón "eliminar" que borre de la colección el objeto correspondiente a la fila eliminada, y que cuando eso suceda, se dispare un evento que replique el cambio a una base de datos. O sea, cuando se borra de la colección en memoria, también debe borrarse de la base de datos.

Este es el código que tengo:

Botón Eliminar
Código:

private void btEliminar_Click(object sender, EventArgs e)
{
  dgvRef.Rows.Remove(dgvRef.SelectedRows[0]);
}

Método carga datos
Código:

private void cargaDatos()
{
  listadoRef = AccesoDatos.listadoRef();
  dgvRef.DataSource = listadoRef;
}

listadoRef es un BindingList<ClasePersonalizada>
dgvRef es un DataGridView

Hasta aqui todo funciona bien, si presiono el botón eliminar, efectivamente desaparece del BindingList el objeto seleccionado.

Ahora, cuando suscribo al evento del BindingList, no encuentro de donde sacar el contenido que tenía el objeto borrado...
El sender solo tiene los elementos de la lista actuales, o sea, los que quedaron ...

Código:

void listadoEmpleados_ListChanged(object sender, ListChangedEventArgs e)
{
  if (e.ListChangedType == ListChangedType.ItemDeleted)
    {
      AccesoDatos.eliminarRef(codRef);
    }
}

¿Alguna idea? ¿Se entendió bien?

Saludos y muchas gracias por su tiempo.

juanpablomonte 14/01/2008 12:24

Re: Eliminar objeto de un BindingList
 
Para mi una solucion, sería salvar en una variable declarada global el contenido del row seleccionado cuando presionas el boton, en el evento click.

dgvRef.SelectedRows[0] " . text" ( no se como sería exactamente), pero la idea es salvar ese dato antes de ser borrado en una variable global, para que puedas usarle luego desde el otro metodo, luego la consulta sería delete mirow from mitable where dato=mivariableglobal...

Espero te ayude.

matiassaitam 14/01/2008 12:27

Re: Eliminar objeto de un BindingList
 
No entiendo a qué te refieres ...
Si estás hablando del código del evento "click" del botón está posteado, es el primero.

Saludos.

matiassaitam 14/01/2008 20:02

Re: Eliminar objeto de un BindingList
 
Cita:

Iniciado por juanpablomonte (Mensaje 2247955)
Para mi una solucion, sería salvar en una variable declarada global el contenido del row seleccionado cuando presionas el boton, en el evento click.

dgvRef.SelectedRows[0] " . text" ( no se como sería exactamente), pero la idea es salvar ese dato antes de ser borrado en una variable global, para que puedas usarle luego desde el otro metodo, luego la consulta sería delete mirow from mitable where dato=mivariableglobal...

Espero te ayude.

Voy a empezar a citar, porque eso que me cambian el mensaje y no me doy cuenta ... :-)

Efectivamente lo que hice es muy similar a lo que mencionas, salvo por el hecho que obtengo el valor que necesito de la siguiente forma:
Código:

dgvRef.SelectedRows[0].Cells[0].Value.ToString()
De cualquier forma, esta solución ya la tenía... buscaba algo más "correcto", claro que como no lo había aclarado está bien que lo pongas.

Por mi parte, estuve buscando un poco más y encontré que se trata de un bug reportado: no hay forma de obtener el elemento eliminado, una vez que se disparo el evento.

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=148506

De cualquier forma, muchas gracias por responder.
Saludos.

PD: disculpen que no ponga la url como enlace, pero no me lo permite el foro por mi antigüedad :'(

juanpablomonte 15/01/2008 05:30

Re: Eliminar objeto de un BindingList
 
ok ojalá que tengas mucha suerte en tu proyecto. Saludos !!!


La zona horaria es GMT -6. Ahora son las 07:20.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.