none
Problema al usar un array de 'DataRowView' como 'DataSource' RRS feed

  • Pregunta

  • Hola,

    Estoy teniendo problemas al utilizar como 'DataSource' en un 'ListBox' un array de objetos 'DataRowView', que es lo que devuelve la función 'FindRows' de la clase 'DataView'.

    El código que me está dando el problema es este:

        Private Sub ActualizarLista(ByVal Lista As ListBox, ByVal Vista As DataView, ByVal idEvento As String)
            Dim resConsulta() As DataRowView = Vista.FindRows(idEvento)
    
            With Lista
                .Sorted = False
                .DisplayMember = "descripcion"
                .DataSource = resConsulta
            End With
    
        End Sub
    
    
    Lo que me pasa es que el lsitbox no es capaz de leer correctamente el campo que le pongo como 'DisplayMember', y en todas los elementos de la lista me saca el texto 'System.Data.DataRowView'

    Si en lugar de un array de 'DataRowView', le paso un array de 'DataRow's, como el que devuelve la función 'Select' de un 'DataTable', funciona bien. Pero no quiero hacer eso porque no está indexado por la clave que quiero buscar.

    Si me creo una nueva 'DataView', pongo el 'RowFilter' para hacer la búsqueda que quiero, y lo uso directamente como 'DataSource' de la lista, también funciona. Pero no quiero hacer esto porque me reconstruye el índice entero.

    También me funciona si no uso el 'DataSource', añado el contenido del array a mano con un código como este:
    For Each item As DataRowView In resConsulta
        Lista.Items.Add(item)
    Next
    
    
    Esto es lo que he hecho, por el momento, para que me funcione. Pero ¿no debería funcionar directamente? ¿Me estoy olvidando de algo? ¿Podría ser un bug de Windows Forms?

    Un saludo, y gracias por anticipado.
    martes, 19 de enero de 2010 16:45

Todas las respuestas

  • Hola.

    Mi Sugerencia es:

    Private Sub ActualizarLista(ByVal Lista As ListBox, ByVal Vista As DataView, ByVal idEvento As String)
        
      Vista.RowFilter ="IdEvento = " & IdEvento

      With Lista
      .DisplayMember = "Descripcion"
      .ValueMember = "IdEvento"
      .DataSource = vista
      End with

    End Sub

    Saludos.

    Sí esto fue de utilidad, marca como respuesta


    Developer .NET
    miércoles, 27 de enero de 2010 18:56