none
Establecer ancho de columnas en gridview WM6 RRS feed

  • Pregunta

  • Hola a todos.
    Tengo un problema que no se como solucionarlo. En un formulario he puesto un gridview y por codigo establezco la cantidad de columnas y algunas de sus propiedades con TableStyles. En el codigo establezco el ancho de cada columna y al ejecutar en el emulador, los datos se muestran correctamente, todos los datos se ven bien y completos. Sin embargo al ejecutarlo en el PDA no se muestran los datos de columnas completos, por ejemplo la columna "Direccion" me trunca aproximadamente en 15 caracteres, cuando deberia mostrar 50. Sin embargo en una version anterior en la que el gridview lo hice por medio del diseñador o con el asistente, no me ocurria esto.
    Por lo cual deduzco que debe haber alguna propiedad que no conozco y esta ocasionado el inconveniente.
    A continuacion pego parte del código para ver si ven algo que yo no...plis...

        Private Sub frmCheckFaltantes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim conn As SqlServerCe.SqlCeConnection = Nothing
            conn = New SqlServerCe.SqlCeConnection("Data Source = \My Documents\Clyfsa\DB\clyfsa.sdf")
            Dim ds As New DataSet

            Dim Comand As New SqlCeCommand
            Dim da As New SqlCeDataAdapter
            da.SelectCommand = Comand
            da.SelectCommand.Connection = conn
            '--------------------
            Comand.CommandText = "SELECT nromedidor, nomusuario, poste, direccion FROM Consumo WHERE (lectactual = 0) AND (motivo = ' ')"

            Me.ConsumoDataGrid.TableStyles.Clear()
            Me.ConsumoDataGrid.TableStyles.
            ' crear un objeto para estilos del datagrid
            Dim oEstiloGrid As New DataGridTableStyle
            oEstiloGrid.MappingName = "consumo"
            ' crear objetos de columna-grid para cada columna de la tabla a mostrar en el datagrid
            Dim oColGrid As DataGridTextBoxColumn
            ' configurar cada objeto de columna-grid
            oColGrid = New DataGridTextBoxColumn
            oColGrid.HeaderText = "Medidor"
            ' nombre de la columna del dataset que se mapea hacia esta columna del        grid()
            oColGrid.MappingName = "nromedidor"
            oColGrid.Width = 70
            ' añadir la columna al objeto que contiene los estilos del datagrid, en concreto, a la colección de estilos de columna
            oEstiloGrid.GridColumnStyles.Add(oColGrid)
            oColGrid = Nothing
            'NUEVA COLUMNA
            oColGrid = New DataGridTextBoxColumn
            oColGrid.HeaderText = "Usuario"
            oColGrid.MappingName = "nomusuario"
            oColGrid.Width = 170
            oEstiloGrid.GridColumnStyles.Add(oColGrid)
            oColGrid = Nothing
            'NUEVA COLUMNA
            oColGrid = New DataGridTextBoxColumn
            oColGrid.HeaderText = "Poste"
            oColGrid.MappingName = "poste"
            oColGrid.Width = 50
            oEstiloGrid.GridColumnStyles.Add(oColGrid)
            oColGrid = Nothing
            'NUEVA COLUMNA
            oColGrid = New DataGridTextBoxColumn
            oColGrid.HeaderText = "Direccion"
            oColGrid.MappingName = "direccion"
            oColGrid.Width = 300
            oEstiloGrid.GridColumnStyles.Add(oColGrid)
            oColGrid = Nothing

            ' una vez creadas todas las columnas de estilos para el grid
            ' añadir el objeto que contiene el estilo personalizado a la colección
            ' de estilos de tablas del datagrid
            Me.ConsumoDataGrid.TableStyles.Add(oEstiloGrid)

            da.Fill(ds, "consumo")
            ConsumoDataGrid.DataSource = ds.Tables("consumo")

        End Sub

    Alguna idea del porque en el emulador funciona bien y en el PDA no..

    Saludos cordiales

    martes, 24 de mayo de 2011 12:48

Respuestas

  • Hola Roberto.

    Ambos datos estan bien, y en realidad el error ha sido mio, nada mas, he ampliado aun mas el ancho de columna y ahora puedo ver todo el formulario.

    Solo una pequeña duda me queda...Usando el diseñador para hacer un formulario de consulta (Agregar un origen de datos, Marcar la tabla para verla como datagrid, arrastrar al formulario), coloco un determinado valor al ancho de una columna, ej. 90.
    Luego en otro formulario hago lo mismo pero por programa, es decri, sin diseñador (Agrego el control de datagrid al formulario, creo las columnas, etc.) y al ancho de columna le pongo el mismo valor (90).

    A la hora de ver en el PDA, en el que hice con el diseñador, puedo ver el dato completo, pero en el que hice "a mano"....no.

    Pero doy como concluido este post agradeciendote tu invalorable ayuda...

     

    Saludos cordiales

    • Marcado como respuesta cri[py] domingo, 12 de junio de 2011 11:59
    domingo, 12 de junio de 2011 11:59

Todas las respuestas

  • Con respecto a mi problema, creo saber la causa, aunque no puedo afirmarlo 100%. El asunto es la version del SO. En el equipo donde se ejecuta, corre Windows Mobile 6.5, sin embargo yo lo desarrolle con Windows Mobile 5.

    Lo digo porque al probar el mismo sistema en otro aparato con WM5, funciona sin problemas, pero en el WM6, no respeta el ancho que Yo establezco por codigo.

    La cuestión es entonces, como hago para cambiar la versión de desarrollo a WM6?, que necesito, y que problemas podria tener al cambiarlo???

    Si alguien tiene alguna sugerencia....bienvenido sea...

     

    Saludos cordiales

    viernes, 27 de mayo de 2011 19:22
  • Me sigo contestando a mi mismo...al parecer a nadie le ha ocurrido algo similar.

    He hecho una pequeña aplicacion usando la plataforma sdk para WM6, y cree dos formularios, en uno de ellos utilice el diseñador para enlazar el origen de datos a un datagrid, luego quite las columnas que no me interesan de la tabla y mediante el diseñador estableci el ancho de cada columna.

    En el otro formulario utilice el codigo que expuse en mi primer post, en donde por codigo establezco el tablestyles, columnstyles, etc. y el ancho de cada columna.

    Bien...al probar en el PDA, que creen...el formulario que fue hecho con el diseñador, funciona a la perfección, es decir, me muestra el contenido completo de cada columna.

    El que fue hecho por codigo, no respeta el ancho que yo definí y no me muestra los datos completos, se truncan...

    Sigo...en las dudas.... a la espera de algun alma caritativa que me brinde un poquito de luz en este oscuro tunel... ;-)))

     

    Saludos cordiales

     

    viernes, 27 de mayo de 2011 22:29
  • Hola

     

    Cuando utilizas TableStyles debes asegurarte que el TableName sea elc orrecto, de lo contrario no fucniona, creo que ese es tu error.

     

    Saludos,


    Roberto Alvarado Taborda www.bogotadotnet.org Core Group BogotaDotNET Mobile Developer .NET Bogota - Colombia
    miércoles, 8 de junio de 2011 3:29
  • Hola

    verifica que el nombre del dataTable sea el mismo que colocas en el MappingName.

     


    Roberto Alvarado Taborda www.bogotadotnet.org Core Group BogotaDotNET Mobile Developer .NET Bogota - Colombia
    • Marcado como respuesta cri[py] domingo, 12 de junio de 2011 11:52
    • Desmarcado como respuesta cri[py] domingo, 12 de junio de 2011 11:52
    viernes, 10 de junio de 2011 19:18
  • Hola Roberto.

    Ambos datos estan bien, y en realidad el error ha sido mio, nada mas, he ampliado aun mas el ancho de columna y ahora puedo ver todo el formulario.

    Solo una pequeña duda me queda...Usando el diseñador para hacer un formulario de consulta (Agregar un origen de datos, Marcar la tabla para verla como datagrid, arrastrar al formulario), coloco un determinado valor al ancho de una columna, ej. 90.
    Luego en otro formulario hago lo mismo pero por programa, es decri, sin diseñador (Agrego el control de datagrid al formulario, creo las columnas, etc.) y al ancho de columna le pongo el mismo valor (90).

    A la hora de ver en el PDA, en el que hice con el diseñador, puedo ver el dato completo, pero en el que hice "a mano"....no.

    Pero doy como concluido este post agradeciendote tu invalorable ayuda...

     

    Saludos cordiales

    • Marcado como respuesta cri[py] domingo, 12 de junio de 2011 11:59
    domingo, 12 de junio de 2011 11:59
  • Hola

    Seguramente cuando cambias el tamaño de la columna lo hace en una unidad diferente que cuando se hace por codigo , por ejemplo si colocas en el codigo : Columna.width = 100 , el asume que so 100 pixeles, y es posible que en el diseñador las unidades sean puntos no pixeles, verifica esto.

    Saludos,


    Roberto Alvarado Taborda www.bogotadotnet.org Core Group BogotaDotNET Mobile Developer .NET Bogota - Colombia
    lunes, 13 de junio de 2011 14:00
  • Hola Roberto.

    Es muy probable que eso este ocurriendo, voy a ver si en la documentacion existe algo al respecto.

     

    Saludos cordiales

    lunes, 13 de junio de 2011 14:36