Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/02/2010, 10:05
AlterElt
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: problemilla con listview

gnzsoloyo, eres grande! jeje pero esta vez o no me he sabido explicar o no me has entendido bien jeje

He probado añadiendo tu código y no he podido solucionar el problema. Yo creo que el asunto esta en como se meten los datos en el listview, más que en la distribución de las columnas.

Vamos, que el problema creo que viene dado porque no añado correctamente al listview los elementos o algo por el estilo. Aquí:

Código vb:
Ver original
  1. fila.SubItems.Add(fechaMedida)

o bien aquí:

Código vb:
Ver original
  1. lvInicioMedidas.Items.Add(fila)

No se si es que entran desordenados o me los inserta directamente en la posición 2 en vez de en la 1, no se...

Raro raro

Al final lo que he hecho es esto:

Código vb:
Ver original
  1. '%%%%%%%%%%%%%%%%%%%%%
  2.        'Relleno el ListView de medidas
  3.        'llenamos el ListView con las medidas
  4.        '%%%%%%%%%%%%%%%%%%%%%
  5.  
  6.         ' Propiedades del ListView  
  7.        With lvInicioMedidas
  8.             .Items.Clear()
  9.             .Columns.Clear()
  10.             .View = View.Details
  11.             .GridLines = True
  12.             .FullRowSelect = True
  13.             ' añadir los nombres de columnas  
  14.            For c As Integer = 2 To TablaMedidas.Columns.Count - 1
  15.                 .Columns.Add(TablaMedidas.Columns(c).Caption, 70, HorizontalAlignment.Center)
  16.             Next
  17.         End With
  18.  
  19.         ' Añadir los registros de la tabla  
  20.        With TablaMedidas
  21.             For f As Integer = 0 To .Rows.Count - 1
  22.  
  23.                 Dim fila As New ListViewItem(TablaMedidas.Rows(f).Item(2).ToString)
  24.                 ' recorrer las columnas  
  25.                For c As Integer = 3 To .Columns.Count - 1
  26.  
  27.                     'If c = 3 Then 'si es una fecha (columna 2)
  28.                    '    Dim fechaMedida As Date = TablaMedidas.Rows(f).Item(c).Date
  29.                    '    fila.SubItems.Add(fechaMedida)
  30.                    'ElseIf c > 3 Then 'si es una medida (resto de columnas)
  31.                    '    Dim medidas As String = TablaMedidas.Rows(f).Item(c).ToString()
  32.                    '    fila.SubItems.Add(medidas)
  33.                    '    'fila.SubItems(c) = medidas
  34.                    'End If
  35.                    Dim medidas As String = TablaMedidas.Rows(f).Item(c).ToString()
  36.                     fila.SubItems.Add(medidas)
  37.  
  38.                 Next
  39.                 lvInicioMedidas.Items.Add(fila)
  40.             Next
  41.         End With

así me lo muestra bien, pero el problema que tengo es que la fecha me la muestra en el formato DD/MM/YYYY HH:HH:HH, cuando yo solo quiero DD/MM/YYYY... he probado cambiando a date aquí:

Código vb:
Ver original
  1. Dim fila As New ListViewItem(TablaMedidas.Rows(f).Item(2).ToString)

dejándolo así:

Código vb:
Ver original
  1. Dim fila As New ListViewItem(TablaMedidas.Rows(f).Item(2).Date)

Pero me da un error:

Código vb:
Ver original
  1. Error   1   Error de resolución de sobrecarga porque ninguna de las funciones 'New' a las que se tiene acceso se puede llamar sin una conversión de restricción:
  2.    'Public Sub New(group As System.Windows.Forms.ListViewGroup)': El parámetro 'group' correspondiente al argumento se reduce de 'Object' a 'System.Windows.Forms.ListViewGroup'.
  3.    'Public Sub New(items() As String)': El parámetro 'items' correspondiente al argumento se reduce de 'Object' a '1-matriz dimensional de String'.
  4.     'Public Sub New(text As String)': El parámetro 'text' correspondiente al argumento se reduce de 'Object' a 'String'.   C:\Users\*\Documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication1\WindowsApplication1.vb 256 21  WindowsApplication1

gracias por la respuesta en cualquier caso

EDITO:

Bueno, tocando, tocando... he dado con la solución:

Ahí va:

Código vb:
Ver original
  1. '%%%%%%%%%%%%%%%%%%%%%
  2.        'Relleno el ListView de medidas
  3.        'llenamos el ListView con las medidas
  4.        '%%%%%%%%%%%%%%%%%%%%%
  5.  
  6.         ' Propiedades del ListView  
  7.        With lvInicioMedidas
  8.             .Items.Clear()
  9.             .Columns.Clear()
  10.             .View = View.Details
  11.             .GridLines = True
  12.             .FullRowSelect = True
  13.             ' añadir los nombres de columnas  
  14.            For c As Integer = 2 To TablaMedidas.Columns.Count - 1
  15.                 .Columns.Add(TablaMedidas.Columns(c).Caption, 70, HorizontalAlignment.Center)
  16.             Next
  17.         End With
  18.  
  19.         ' Añadir los registros de la tabla  
  20.        With TablaMedidas
  21.             For f As Integer = 0 To .Rows.Count - 1
  22.                 'declaro la llamada a la columna uno
  23.                Dim col1 As String = TablaMedidas.Rows(f).Item(2).Date
  24.  
  25.                 Dim fila As New ListViewItem(col1)
  26.                 ' recorrer las columnas  
  27.                For c As Integer = 3 To .Columns.Count - 1
  28.  
  29.                     'If c = 3 Then 'si es una fecha (columna 2)
  30.                    '    Dim fechaMedida As Date = TablaMedidas.Rows(f).Item(c).Date
  31.                    '    fila.SubItems.Add(fechaMedida)
  32.                    'ElseIf c > 3 Then 'si es una medida (resto de columnas)
  33.                    '    Dim medidas As String = TablaMedidas.Rows(f).Item(c).ToString()
  34.                    '    fila.SubItems.Add(medidas)
  35.                    '    'fila.SubItems(c) = medidas
  36.                    'End If
  37.                    Dim medidas As String = TablaMedidas.Rows(f).Item(c).ToString()
  38.                     fila.SubItems.Add(medidas)
  39.  
  40.                 Next
  41.                 lvInicioMedidas.Items.Add(fila)
  42.             Next
  43.         End With

Saludos!

Última edición por AlterElt; 21/02/2010 a las 10:15