none
Mostrar campo booleano de forma distinta RRS feed

  • Pregunta

  • Hola

    Tengo una columna Booleana llamada sexo, la quiero mostrar en un dataGridView, pero cuando es True quiero que Muestre "Femenino", y cuando es False, "Masculino". Cómo se hece.

    miércoles, 13 de junio de 2012 18:39

Respuestas

  • Creo que hay un par de caminos.  El más sencillo es:  Agregue una propiedad tipo string de sólo lectura al objeto que devuelva "Masculino" o "Femenino" dependiendo del valor booleano.

    Ejemplo:  Asumo que usted tiene una colección de objetos de algún tipo de clase en particular (normalmente de una clase de la capa de negocio):

    public class Persona
    {
        //Esta sería la propiedad booleana original:
        public bool Masculino { get; set; }
        //Esta sería la propiedad nueva de sólo lectura:
        public string Sexo
        {
            get
            {
                return Masculino ? "Masculino" : "Femenino";
            }
        }
        ...
    }

    Y pues entonces lo único que resta hacer es cambiar la columna de tipo Checkbox (para la columna booleana) por una te texto para esta propiedad de sólo lectura.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta maxserv jueves, 14 de junio de 2012 3:34
    miércoles, 13 de junio de 2012 20:38
  • hola

    recuerda que para implementar lo que comenta jose deberias definir las columnas del datagridview en timepo de diseño

    [DataGridView] – Parte 4 - Uso del DataGridViewComboBoxColumn

    como explico en la primer partedel articulo, sino lo haces asi y dejas que se creen sola las columans veras dos una del tipo bool y la otra con el string, cuando deberia ser uan unica

    la clase podria ser

    Public Class Persona
    	
    	Public Property Sexo() As Boolean
    		Get
    			Return m_sexo
    		End Get
    		Set
    			m_sexo= Value
    		End Set
    	End Property
    	Private m_sexo As Boolean
    
    	Public ReadOnly Property SexoDescripcion() As String
    		Get
    			Return IIf(Me.Sexo, "Masculino", "Femenino")
    		End Get
    	End Property
    
    End Class

    o sea tienes la propiedad Sexo pero esta no al defines como columna en el grid, la que si usas es SexoDescripcion que es la que vas a mostrar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta maxserv jueves, 14 de junio de 2012 3:35
    jueves, 14 de junio de 2012 1:49
  • hola

    recuerda que para implementar lo que comenta jose deberias definir las columnas del datagridview en timepo de diseño

    [DataGridView] – Parte 4 - Uso del DataGridViewComboBoxColumn

    como explico en la primer partedel articulo, sino lo haces asi y dejas que se creen sola las columans veras dos una del tipo bool y la otra con el string, cuando deberia ser uan unica

    la clase podria ser

    Public Class Persona
    	
    	Public Property Sexo() As Boolean
    		Get
    			Return m_sexo
    		End Get
    		Set
    			m_sexo= Value
    		End Set
    	End Property
    	Private m_sexo As Boolean
    
    	Public ReadOnly Property SexoDescripcion() As String
    		Get
    			Return IIf(Me.Sexo, "Masculino", "Femenino")
    		End Get
    	End Property
    
    End Class

    o sea tienes la propiedad Sexo pero esta no al defines como columna en el grid, la que si usas es SexoDescripcion que es la que vas a mostrar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Bueno, hice lo siguiente; todas las columnas menos "Sexo" las muestro con un datatable y  autogenero las columnas,

    creé dentro del dataGridView una única columna denominada Columna1 pero con encabezado "Sexo", con esa columna muestro los datos "Measculino" y "femenino" según sea True o False la columna sexo de la base de datos y por último le puse un displayindex en el lugar donde quiero mostrar la columna. Gracias por la ayuda

    • Marcado como respuesta maxserv jueves, 14 de junio de 2012 3:35
    jueves, 14 de junio de 2012 3:33

Todas las respuestas

  • Creo que hay un par de caminos.  El más sencillo es:  Agregue una propiedad tipo string de sólo lectura al objeto que devuelva "Masculino" o "Femenino" dependiendo del valor booleano.

    Ejemplo:  Asumo que usted tiene una colección de objetos de algún tipo de clase en particular (normalmente de una clase de la capa de negocio):

    public class Persona
    {
        //Esta sería la propiedad booleana original:
        public bool Masculino { get; set; }
        //Esta sería la propiedad nueva de sólo lectura:
        public string Sexo
        {
            get
            {
                return Masculino ? "Masculino" : "Femenino";
            }
        }
        ...
    }

    Y pues entonces lo único que resta hacer es cambiar la columna de tipo Checkbox (para la columna booleana) por una te texto para esta propiedad de sólo lectura.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta maxserv jueves, 14 de junio de 2012 3:34
    miércoles, 13 de junio de 2012 20:38
  • uso lenguaje visual Basic .net pero bueno voy a probar
    miércoles, 13 de junio de 2012 20:41
  • Le recomiendo entonces el traductor en www.developerfusion.com para pasar de C# a VB.net porque yo no uso VB.net.  Cualquier ejemplo que yo le dé será en C#.

    Suerte con eso.  Avísenos si le funciona bien.


    Jose R. MCP
    Code Samples

    miércoles, 13 de junio de 2012 20:42
  • hola, en realidad no divido en capas, solamente tengo las conusltas en módulos separados, pero decís que si creo 2 campos string, y luego  si uno es falso se muestra un campo y si en true se muestra el otro?

    porque quiero q se muestre en el datagridview

    • Editado maxserv miércoles, 13 de junio de 2012 20:46
    miércoles, 13 de junio de 2012 20:45
  • hola

    recuerda que para implementar lo que comenta jose deberias definir las columnas del datagridview en timepo de diseño

    [DataGridView] – Parte 4 - Uso del DataGridViewComboBoxColumn

    como explico en la primer partedel articulo, sino lo haces asi y dejas que se creen sola las columans veras dos una del tipo bool y la otra con el string, cuando deberia ser uan unica

    la clase podria ser

    Public Class Persona
    	
    	Public Property Sexo() As Boolean
    		Get
    			Return m_sexo
    		End Get
    		Set
    			m_sexo= Value
    		End Set
    	End Property
    	Private m_sexo As Boolean
    
    	Public ReadOnly Property SexoDescripcion() As String
    		Get
    			Return IIf(Me.Sexo, "Masculino", "Femenino")
    		End Get
    	End Property
    
    End Class

    o sea tienes la propiedad Sexo pero esta no al defines como columna en el grid, la que si usas es SexoDescripcion que es la que vas a mostrar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta maxserv jueves, 14 de junio de 2012 3:35
    jueves, 14 de junio de 2012 1:49
  • no hay otra forma?, es que tuve muchos problemas agregando los datos al dataGridView de esa forma, no se puede poner una mascara o algo asi?

    igual gracias,

    voy a intentar agregar una columna "Sexo" aparte, y que muestre los datos con esa clase

    • Editado maxserv jueves, 14 de junio de 2012 2:37
    jueves, 14 de junio de 2012 2:35
  • hola

    recuerda que para implementar lo que comenta jose deberias definir las columnas del datagridview en timepo de diseño

    [DataGridView] – Parte 4 - Uso del DataGridViewComboBoxColumn

    como explico en la primer partedel articulo, sino lo haces asi y dejas que se creen sola las columans veras dos una del tipo bool y la otra con el string, cuando deberia ser uan unica

    la clase podria ser

    Public Class Persona
    	
    	Public Property Sexo() As Boolean
    		Get
    			Return m_sexo
    		End Get
    		Set
    			m_sexo= Value
    		End Set
    	End Property
    	Private m_sexo As Boolean
    
    	Public ReadOnly Property SexoDescripcion() As String
    		Get
    			Return IIf(Me.Sexo, "Masculino", "Femenino")
    		End Get
    	End Property
    
    End Class

    o sea tienes la propiedad Sexo pero esta no al defines como columna en el grid, la que si usas es SexoDescripcion que es la que vas a mostrar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Bueno, hice lo siguiente; todas las columnas menos "Sexo" las muestro con un datatable y  autogenero las columnas,

    creé dentro del dataGridView una única columna denominada Columna1 pero con encabezado "Sexo", con esa columna muestro los datos "Measculino" y "femenino" según sea True o False la columna sexo de la base de datos y por último le puse un displayindex en el lugar donde quiero mostrar la columna. Gracias por la ayuda

    • Marcado como respuesta maxserv jueves, 14 de junio de 2012 3:35
    jueves, 14 de junio de 2012 3:33