Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con DataGrid, ayuda por favor

Estas en el tema de Problema con DataGrid, ayuda por favor en el foro de .NET en Foros del Web. Estoy implementando una lista de impresion en C# y quiero que el usuario pueda eliminar entradas a su gusto de la lista. Esto me funciona ...
  #1 (permalink)  
Antiguo 02/01/2006, 04:42
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
Pregunta Problema con DataGrid, ayuda por favor

Estoy implementando una lista de impresion en C# y quiero que el usuario pueda eliminar entradas a su gusto de la lista. Esto me funciona muy bien de esta manera:
Haciendo una llamada a:

private DataTable table = new DataTable();
queue, es el datagrid.

popQueue(queue.CurrentRowIndex);

private void popQueu(int num){
table.Rows[num].Delete();
table.AcceptChanges();
}

El problema reside en que tengo un thread en ejecucion que testea una targeta de E/S por USB. Total, en cierto momento hago una llamada a esta funcion popQueue desde el thread, que esta en la misma clase. Pero siempre genera una exepcion diciendo que no hay nada en esa posicion. Entonces no entiendo que accediende desde un boton funcione perfecto y desde un thread por otro lado no funcione. Alguien sabe porque???

PD: tambien a veces se me duplican las barras de desplazamiento del datagrid, y no se como arreglar-lo.

Gracias a todos,

Guillem

Última edición por Guille.m; 03/01/2006 a las 06:04
  #2 (permalink)  
Antiguo 02/01/2006, 14:45
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Pon el código relacionado (probablemente tu _problema_ sea porque no le estás pasando ese parámetro al thread)

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 03/01/2006, 01:39
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
Hola, gracias por contestar.

Bueno es que en principio desde el thread capturo una señal externa, y si esta es igual = 1, me indica que hay que borrar la primera entrada del data table. Entonces desde alli es donde llamo a esta funcion.
Creo un thread con esta funcion start() solo empezar la funcion principal, de esta manera:

threadDAQPAd = new System.Threading.Thread(new system.Threading.ThreadStart(start));
threadDAQPAd.Priority = ThreadPriority.Lowest;
threadDAQPAd.Start();

private void start()
{
short iStatus = 0;
short iDevice = 1;
short iPort = 1;
long iPattern = 0;

while(true)
{
try
{
unsafe
{
// Llamada a la DLL, implementada en otra clase (DAQPad6507)
iStatus = DAQPad6507.DIG_In_Prt(iDevice, iPort, &iPattern);
}
if(iStatus < 0)
{
printerStopped = true;
}
else
{
if(iPattern == 1)
{
popQueue(0);
iPattern = 0;
}
if(iPattern == 2)
{
MessageBox.Show ("Ribbon broken", "Printer Error",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
printerStopped = true;
iPattern = 0;
}
}
catch
{
printerStopped = true;
}
Thread.Sleep(100);
}
}


//----------------------------------------------------------------

La verdad es que ya no se que mas probar, asi que cualquier ayuda o idea me iran genial.

Guillem
  #4 (permalink)  
Antiguo 03/01/2006, 19:17
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hmm, intenta poner esto despues de asignar la propiedad DataSource de tu DataGrid:
Código:
TuDataGrid.BindingContext[TuTabla].SuspendBinding();
Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #5 (permalink)  
Antiguo 04/01/2006, 03:04
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
Tampoco me funciona asi. Yo creo que el problema reside en que la funcion la llamo desde un thread que no pertenece a la ejecucion principal, donde esta el entorno grafico. No hay que especificar nada en la declaracion del thread para que vaya sincronizado con el otro o algo asi?? Pq sino ya no se me ocurre nada mas..... :(
  #6 (permalink)  
Antiguo 04/01/2006, 20:10
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hmm, intenta reproducir tu problema haciendo un código más simple, para que podamos probar el ejemplo y posiblemente aportar con más ideas.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #7 (permalink)  
Antiguo 05/01/2006, 02:09
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo

He solucionado el problema quitando el thread, es decir, la funcion que modificaba el datatable funcionaba perfecta, el problema era llamarla desde el thread.

Lo que he echo es testear la linia con un timer en el thread principal, y haciendo la misma llamada funciona. 2 dias de trabajo perdidos.... en fin, gracias a todos por vuestro interes,


Guillem
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:04.