Visual Basic.NET - Recorrer listview en WPF

   
Vista:

Recorrer listview en WPF

Publicado por HAF (178 intervenciones) el 23/10/2012 10:32:41
Buenas,
Estoy trabajando con WPF en VBNET al recorrer un Listview de la manera tradicional como se hace en en VBNET tradicional no he podido hacerlo (ni con foreach ni con nada)

Ejemplo:
1
2
3
4
5
Dim litem1 As ListViewItem = TryCast(obj, ListViewItem)
For L = 0 To ListView1.Items.Count - 1
                litem1 = ListView1.Items(L) ' AQUI LANZA EL ERROR
 
next


Así lleno el Listview:

1
2
3
4
5
6
Private Sub LlenaListview()
                 StrSql = "select * from SubFamilia Where IdGrupo   ='" &    Me.Cbo_grupo.SelectedValue.trim & "'"
            StrSql += " And IdSubGrupo='" & Me.Cbo_Subgrupo.SelectedValue.trim & "'"
            StrSql += " And IdFamilia='" & Me.Cbo_Familia.SelectedValue.trim & "'"
            ListView1.DataContext = Conexion.EjecutaDataTable(StrSql)
End Sub


el error que me arroja es : No se puede convertir un objeto de tipo 'System.Data.DataRowView' al tipo 'System.Windows.Controls.ListViewItem'.

Alguien me puede ayudar ?
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

me respondo a mi mismo

Publicado por haf (178 intervenciones) el 23/10/2012 20:30:37
A quien le pueda interesar.
El problema estaba en el enlace en el datacontext (ListView1.DataContext = Conexion.EjecutaDataTable(StrSql))

Así que decidí llenarlo manualmente así:

en el load del formulario:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Me.PonerListview()
   Me.LlenaListview()
 
private   Sub PonerListview()
        ListView1.Items.Clear()
        Dim view = New GridView()
        view.Columns.Add(New GridViewColumn() With {.Header = "Código", .Width = 50, .DisplayMemberBinding = New Binding("codigo")})
        view.Columns.Add(New GridViewColumn() With {.Header = "Descripción", .Width = 450, .DisplayMemberBinding = New Binding("descrip")})
        ListView1.View = view
End Sub
 
 
Private Sub LlenaListview()
        StrSql = "select * from colores order by DescripcionColor"
        Dim DatareaderSQL As SqlDataReader = Conexion.EjecutaDataReaderSQL(StrSql)
        If DatareaderSQL.HasRows Then
            While DatareaderSQL.Read
                If Not IsDBNull(DatareaderSQL.Item("IDColor")) Then
                    Dim Codex As String = Trim(DatareaderSQL.Item("IDColor"))
                    Dim Descrip As String = Trim(DatareaderSQL.Item("DescripcionColor"))
                    ListView1.Items.Add(New With {.codigo = Codex.Trim, .descrip = Descrip.Trim})
                End If
            End While
        End If
End Sub


y para recorrer el listview (también se puede usar el foreach)

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
        Dim litem1 As String
        Dim litem2 As String
        Dim litem3 As String
        Dim litem4 As String
        For i = 0 To ListView1.Items.Count - 1
            litem1 = Me.ListView1.SelectedItems(0).codigo() 'item seleccionado
            litem2 = Me.ListView1.SelectedItems(0).descrip() 'item seleccionado
            litem3 = Me.ListView1.Items(i).codigo()  'item
            litem4 = Me.ListView1.Items(i).descrip()   'item
        Next
 
End Sub
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