Monday, April 4, 2011

Cómo cambiar el valor De una columna De Un gridview En tiempo De ejecución

KeyWords: ASP.NET, VB.NET, GRIDVIEW

Resulta que la consulta SQL que le bindeas a tu GridView tiene un campo byte que cada número significa algo. Por ejemplo. 0: Iniciado. 1: Vigente. 2:Cancelado. 3:Terminado, etc. Y lo cierto es que no quieres mostrar este dato como número sino como texto.

Te doy tres alternativas para una solución.

Solución 1

Utilizando una columna normal (BoundField), en el evento del GridView llamado "RowDataBound", y suponiendo que la columna a la que se quiere modificar sea la 0, insertas el siguiente código:

Protected Sub grvPrueba_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grvPrueba.RowDataBound
        Try
            
            If e.Row.RowType = DataControlRowType.DataRow Then 

                   Select Case e.Row.Cells(0).Text
                    Case 0
                        e.Row.Cells(0).Text = "Iniciado"
                    Case 1
                        e.Row.Cells(0).Text = "Vigente"
                    Case 2
                        e.Row.Cells(0).Text = "Cancelado"
                    Case 3
                        e.Row.Cells(0).Text = "Terminado"
                End Select


            End If
        Catch ex As Exception
            Throw ex
        Finally

        End Try
    End Sub

Solución 2

Utilizando una columna templeteada (TemplateField), le pones un label y llamas a una función en la cual le das el número y te devolverá el valor correspondiente.

El siguiente código, en el .aspx



fncGetEstado es la función
estado es el campo de base de datos, ese campo numérico en el se registran los estados en forma de número.

El siguiente código en el codeBihind

Public Function fncGetEstado(ByVal estado As Byte) As String

        Select Case estado
            Case 0
                Return "Iniciado"
            Case 1
                Return "Vigente"
            Case 2
                Return "Cancelado"
            Case 3
                Return "Terminado"

        End Select

    End Function

Solución 3

Otra posible solución sería que directamente hagas la modificación en tu consulta SQL y así cuando la bindees a tu GridView ya no tendrás que hacer nada. La consulta SQL sería así.

SELECT columna1, columna2, CASE columna3 WHEN 0 THEN 'Iniciado' WHEN 1 THEN 'Vigente' WHEN 2 THEN 'Cancelado' WHEN 3 THEN 'Terminado' AS estado
FROM tabla1

Ojo que ahora la columna ya no será "columna1", sino que en tu GridView debes enlanzarlo con "estado" la cual es la columna ya procesada.

=) HaPPy CoDiNg!

1 comment:

  1. Gracias por el código, ha sido de mucha ayuda.
    Sólo una sugerencia poco importante: Nunca, pero nunca jamás combines mayúsculas y minúsculas como lo has hecho en cada palabra del título de este post. Es simplemente horrible y además cansa la vista.

    ReplyDelete