Thursday, April 7, 2011

Programador como diseñador

Vaya! Ya me lo decia mi hermano... 'Querida Lizzy te aconsejo a que estudies Diseño Gráfico, Diseño Web todo lo que tenga que ver con Diseño. Desarrollador + Diseñador es una buena combinación. Hace falta.'

Digamos que todos sabemos que 'el que mucho aprieta, poco abarca'. Pero a mi me parece un consejo que hay que tomarlo como: 'Es necesario saber defenderse. Tener la noción.'

Casi siempre se ha dicho sobre el desarrollador como diseñador... ni hablar! No me resultó tan gracioso hasta que leí algo al respecto. Uhm y hasta pena me dio porque luego dicen que los usuarios son los tontos. o_O

Pero debo decir que yo, como mujer, no me sumo al 100% de ese cúmulo de programadores que asustan a los usuarios. Lo he vivido porque he trabajado con sistemas de que sí. Y yo al ponerme como usuario, los entiendo más!

Si bien, como diseñadora gráfica... (manejar Photoshop, FireWorks, Flash) estoy en pañales, en diseño de mis interfaces son detallista y cuidadosa. Vigilo mi ortografía, puntuación, redacción en los mensajes de usuario.

La siguiente es una imágen poco exagerada para ponerle humor al tema. (Espero que no haya quienes se den aludidos al caso, jajaja)


En este link, 7 SEÑALES QUE UNA INTERFAZ DE USUARIO FUE CREADA POR UN PROGRAMADOR (The 7 signs your UI was created by a programmer), muestra precisamente esas señales para hacernos entender que podemos mejorar con nuestro trabajo.

Si bien esto no está fuertemente conectado con el tema de diseño gráfico sino mas bien de cuidado e iniciativa propia, estudiar diseño nos puede ayudar a darnos pautas para que nuestro producto se "vea más bonito". Es cierto, la belleza es subjetiva pero al menos hay algo que se llama sentido común y órden.

Wednesday, April 6, 2011

Cómo validar una entrada De datos numérica

KeyWords: ASP.NET, VB.NET, Validar, Entrada de Datos

Cuando se manejan formularios, al momento de insertar los datos a una base de datos éstos deben coincidir con el tipo (cadena, entero, fecha, etc.) que estamos utilizando.

Como controles AJAX, hay un extender que se llama FilteredTextBoxExtender al cual podemos decirle qué tipo de entrada quiere para una caja de texto, incluso podemos customizarlo a nuestro agrado. Pero en el caso que se necesite sólo números (para este ejemplos nos centraremos en validar a INTEGER), el código .aspx sería así:







Cuando ejecutemos el proyecto, veremos que no nos permitirá typear letras ni otros caracteres a parte de números. Pero sí podremos typear lo siguiente: "111111111111111111111111111111111111111111111111"

Definitivamente eso nos daría una excepción. Para controlarla, yo utilizo el "TryParse" como en el siguiente código, en el CodeBehind:


Protected Sub btnValidar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnValidar.Click
If Me.txtEntrada.Text.Length > 0 Then
Dim i As Integer = 0
If Not Integer.TryParse(Me.txtEntrada.Text, i) Then
Me.lblMensaje.Text = "La entrada debe ser un valor numérico."
Else
Me.lblMensaje.Text = "Good!"
End If
End If
End Sub


=) HaPPy CoDiNg!

Tuesday, April 5, 2011

Cómo cargar Un combo / dropdownlist dentro De Un gridview

KeyWords: TemplateField, DropDownList en GridView

Para poder agregar un combo o dropdownlist dentro de un gridview, es necesario utilizar una columna templeteada (TempleateField).

El siguiente código en el archivo .aspx



 
    Prueba de Combo 
                                                            
     
                                                                
  
 
 


Dentro del evento del GridView llamado RowDataBound, 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
  Dim combo As DropDownList = DirectCast(e.Row.FindControl("cboComboPrueba"), DropDownList)
   combo.ClearSelection()
   If combo IsNot DBNull.Value Then
      Me.prcCargarComboGridView(combo)
   End If
  End If
 Catch ex As Exception
  Throw ex
 End Try
End Sub


El siguiente código es la función que hace cargar los datos al dropDonwList. Insertalo en cualquier lugar de tu CodeBehind:


Public Sub prcCargarComboGridView(ByVal cboCombo As DropDownList)
Dim objNegocio As New clsClaseNegocios
Dim dtDatosParaCargarElCombo As DataTable = objNegocio.fncGetDatos()
  cboCombo.DataSource = dtDatosParaCargarElCombo 
            cboCombo.DataTextField = "nombre"
            cboCombo.DataValueField = "codigo"
            cboCombo.DataBind()
    End Sub


Quedaría como se muestra en la siguiente imágen:




=) HaPPy CoDiNg!

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!