none
GridView y problemas para refrescar las filas RRS feed

  • Pregunta

  • Hola grupo, tengo el siguiente problema, la grilla no me actualiza cuando esta con binding a una lista

    algo así:

    GridView1.ItemsSource = List(Of Clase)

    ahora cuando agrego items a la colección los agrega a la misma, pero la grilla no refresca.. o sea, no refresca en primera instancia, pero si a los headers le hago click para que reordene aparecen automáticamente las filas agregadas... alguien sabe que puede ser?

    Muchas Gracias

    martes, 13 de abril de 2010 11:27

Respuestas

  • Fijate si tenes referenciado el Namespace System.Collections.ObjectModel .

    Posiblemente te falte el Using.

     


    Sandro D. Garcia
    Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
    -----
    Please, if this message helps you, remember mark it as response, may be can help more people with same problem.
    -----
    Mi Blog
    • Marcado como respuesta samArg jueves, 15 de abril de 2010 17:00
    jueves, 15 de abril de 2010 15:13
  • En realidad no hace falta que herede de List (of Empleado), solo tienen que heredar de IObservableCollection. Pero basicamente, es Correcto. Para bindear una lista de algo a un control que permita mostrar listas, si bien le podes pasar cualquier colección al ItemSource, si  la colección no implementa IObservableCollection, no es capaz de decirle al control cuando el contenido cambio. Es por eso que tenes que implementar esta interfase en la clase que usas para tu itemsource o, en su defecto en vez de usar un List( of Empleado), deberías usar un ObservableColection(of Empleado).

    Aca de dejo un link por ahí te sirve para aclarar: http://msdn.microsoft.com/en-us/library/ms668604.aspx

    Saludos,


    Sandro D. Garcia
    Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
    -----
    Please, if this message helps you, remember mark it as response, may be can help more people with same problem.
    -----
    Mi Blog
    • Marcado como respuesta samArg jueves, 15 de abril de 2010 13:04
    jueves, 15 de abril de 2010 12:28

Todas las respuestas

  • Para solucionarlo por ahora hago

    GridView1.ItemsSource = Nothing
    GridView1.ItemsSource = List(Of Clase)

    de esa manera funciona sin problemas, pero no alcanzo a entender que sucede...

     

     

    martes, 13 de abril de 2010 11:52
  • Hola samArg.

    ¿Que tienes como fuente de datos?, ¿puedes poner algo mas de codigo?


    Saludos
    David González
    martes, 13 de abril de 2010 15:35
  • El problema que tenes es que no estas pasando una ObservableCollection.

    Para que puedas ver los datos reflejados automáticamente tenes que utilizar como ItemSource un ObservableCollection o una clase que herede de IObservableCollection.


    Sandro D. Garcia
    Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
    -----
    Please, if this message helps you, remember mark it as response, may be can help more people with same problem.
    -----
    Mi Blog
  • hola

    la verdad es que necesito tambien el actualizar el datagrid, lo que pasa es que cargamos el datagrid con datos XML pero cuando vamos a dar clic a otra celda se me borra los datos de la celda, en el caso de un list dentro de un datagrid tambien al subir los datos me los muestra pero como hago para mantener ese dato en el grid o guardar el dato que se me quede ahi al escoger un dato ???.

     

     

    Muchas gracias

     

     

    jueves, 15 de abril de 2010 3:44
  • lo que le asigno al item source es una Lista de un tipo clase custom.. por ejemplo Empleado, con sus propiedades y metodos... lo que me dicen es que por ejemplo, creo una clase EmpleadoCol que herede a list(of Empleado) e implemente la IObservableCollection?? no es asi?

     

    gracias

    jueves, 15 de abril de 2010 11:18
  • En realidad no hace falta que herede de List (of Empleado), solo tienen que heredar de IObservableCollection. Pero basicamente, es Correcto. Para bindear una lista de algo a un control que permita mostrar listas, si bien le podes pasar cualquier colección al ItemSource, si  la colección no implementa IObservableCollection, no es capaz de decirle al control cuando el contenido cambio. Es por eso que tenes que implementar esta interfase en la clase que usas para tu itemsource o, en su defecto en vez de usar un List( of Empleado), deberías usar un ObservableColection(of Empleado).

    Aca de dejo un link por ahí te sirve para aclarar: http://msdn.microsoft.com/en-us/library/ms668604.aspx

    Saludos,


    Sandro D. Garcia
    Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
    -----
    Please, if this message helps you, remember mark it as response, may be can help more people with same problem.
    -----
    Mi Blog
    • Marcado como respuesta samArg jueves, 15 de abril de 2010 13:04
    jueves, 15 de abril de 2010 12:28
  • Gracias Sandro, ahora.. estoy usando Silverlight 3, el VS no me encuentra IObservableCollection ni ObservableColection..

    que puede ser?

    jueves, 15 de abril de 2010 13:08
  • Fijate si tenes referenciado el Namespace System.Collections.ObjectModel .

    Posiblemente te falte el Using.

     


    Sandro D. Garcia
    Colabora con el foro: Si este mensaje te es de utilidad marcalo como respuesta.
    -----
    Please, if this message helps you, remember mark it as response, may be can help more people with same problem.
    -----
    Mi Blog
    • Marcado como respuesta samArg jueves, 15 de abril de 2010 17:00
    jueves, 15 de abril de 2010 15:13