C sharp - SetCurrentCellAddressCore

 
Vista:

SetCurrentCellAddressCore

Publicado por Luis (5 intervenciones) el 06/06/2013 15:25:32
Hola. Estoy teniendo el siguiente problema:

En un formulario tengo dos grids, uno principal que me selecciona contactos y otro que dependiendo de la fila seleccionada en el grid de contactos me carga el otro grid con teléfonos.

Los datos los asigno al modo:

DataGridView.DataSource = DataTable

Pues bien, en el grid de contactos selecciono uno y me carga en el de teléfonos 3 filas. Ahora en el de telefonos selecciono la 2ª fila (hago click en ella). Pues bien, si ahora pulso en un contacto distinto me produce la siguiente excepcion:

La operación no es válida porque origina una llamada reentrante a la función SetCurrentCellAddressCore.

La pila de llamadas es:
en System.Windows.Forms.DataGridView.SetCurrentCellAddressCore(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick)
en System.Windows.Forms.DataGridView.set_CurrentCell(DataGridViewCell value)
en System.Windows.Forms.DataGridView.set_DataSource(Object value)
en Formulario.cargarGridTelefonos() en Formulario.cs:línea x

la línea x es en la que hago la asignación DataGridView.DataSource = DataTable

He de indicar que el fallo no se produce si cambio el contacto sin haber pulsado en ninguna fila del grid de los teléfonos o si directamente aplico un filtro en el grid de teléfonos.

Tampoco me genera el error en tiempo de depuración de errores.

El DataTable es correcto (lo he comprobado asignandolo a un grid distinto de comprobación).

A titulo informativo, el grid de teléfonos sigue mostrandome las mismas filas que mostraba al pulsar sobre el primer contacto (antes de seleccionar una fila del grid de teléfonos y cambiar el contacto).

¿Alguien podría decirme que está ocurriendo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

SetCurrentCellAddressCore

Publicado por Luis (5 intervenciones) el 06/06/2013 16:57:00
Problema resuelto.

He interpuesto un BindingSource y así ha dejado de dar el fallo:

En vez de:

DataGridView.DataSource = DataTable

Creo una variable de instancia BindigSource, en el Load de Formulario hago el:

DataGridView.DataSource = BindingSource

y luego en la función que recarga los teléfonos, es donde asigno el DataTable al BindingSource:

BindingSource.DataSource = DataTable

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 31
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

SetCurrentCellAddressCore

Publicado por xve (37 intervenciones) el 06/06/2013 17:57:07
Hola Luis, gracias por comentarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SetCurrentCellAddressCore

Publicado por Antonio (1 intervención) el 01/04/2016 14:07:06
Genial!

Me ayudó casi 3 años después xD

Mi problema era parecido, quería editar una línea de un datagrid, pero si pulsaba con el ratón en otra línea mientras editaba, al cancelar la edición me salía el mismo error :P

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando
Val: 2
Ha disminuido su posición en 8 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

SetCurrentCellAddressCore

Publicado por Fernando (1 intervención) el 08/03/2019 18:00:00
6 años después y soluciono el problema

genial

1
2
3
4
5
6
7
8
9
10
public void Llenar()-- Este se ejecuta cuando se genera el evento CellEndEding
{
    bindingSource.DataSource = MantenimientoBLL.DatosBLL();
}
 
private void frmMantenimiento_Load(object sender, EventArgs e)
{
    bindingSource.DataSource = MantenimientoBLL.DatosBLL();
    dgvDatos.DataSource = bindingSource;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar