Actualizar un datagrid y puerto serie

17/03/2006 - 17:42 por ana | Informe spam
Hola,
Tengo una ventana con un datagrid y dos campos de texto. En uno se indica
el valor del datagrid que en ese momento se tiene que leer con una pistola
LCB y en el otro se escribe el valor que se lee de la pistola. Cuando lo
leido es correcto actualizo el datagrid y paso al siguiente valor a ser
comprobado. Cuando se ha terminado de comprobar todas las filas del data
grid llamo a una función para refrescar los datos, que es la misma a la que
se llama en el Load de la ventana. En esta función creo un dataset, realizo
la consulta SQL y asocio el datagrid con el dataset.

En el Load no da problemas, pero cuando voy a recargar otra vez los datos
después de leerlos todos, al hacer el SetDataBinding del datagrid con el
dataset me da un error de:

- System.ArgumentException - Controls created on a thread cannot be parented
to another thread

Los datos de la pistola se leen a través del puerto serie. En la clase para
manejar el puerto serie declaro el evento:

public event EtiquetaRecibidaDelegate EtiquetaRecibida;
public delegate void EtiquetaRecibidaDelegate(string label);

Y luego en la función donde se abre el puerto serie:

EtiquetaRecibida += new
ComPistolaLCB.EtiquetaRecibidaDelegate(Form).LoadLabel);

La función LoadLabel está definida en Form (la ventana con el datagrid).

La función que refresca los datos tiene el siguiente código:

DataSet dataset = new DataSet(DATASET_PRESEQUENCING_NAME);
if (!presequencingUIProcess.PresequencingCurrentGetList(lineTC, compFamily,
ref dataset, DATASET_PRESEQUENCING_NAME))
return;

dataset.DataSetName = DATASET_PRESEQUENCING_NAME;
dGCurrentPresequencing.SetDataBinding(dataset, DATASET_PRESEQUENCING_NAME);
dGCurrentPresequencing.Refresh();

- En el SetDataBinding es donde me da el error.

He probado declarando el dataset como una variable global de la clase y
haciendo un reset al principio de la función: dataset.Reset();

Entonces no me da ese error pero el datagrid me aparece vacío. Sin embargo,
depurando, si consulto: datagrid.DataSet.Tables
veo que si están los datos que se deberían de mostrar.

Espero que me haya explicado bien.
No sé si a alguien le ha pasado esto alguna vez y/o si conoce la solución.
Pero agradecería muchísimo si alguien me dice como lo podría solucionar.

Muchas gracias,
Ana
 

Leer las respuestas

#1 Vyacheslav Popov
21/03/2006 - 21:48 | Informe spam
Hola Ana, no estoy seguro de podré ayudarte, pero he visto varios errores.
Te los mostrare en el código.

Mostrar la cita
¿Que hace este código?



Mostrar la cita
Esta declaración te sobra, ya que le diste el nombre en el constructor.


Mostrar la cita
El método SetDataBinding debe recibir el dataSet y el nombre de la TABLA. En
tu caso si tiene solo una tabla lo tienes que dejar en blanco, pon comillas
vacías ("")

Preguntas similares