Mostrando entradas con la etiqueta formview. Mostrar todas las entradas
Mostrando entradas con la etiqueta formview. Mostrar todas las entradas

martes, 18 de diciembre de 2007

Dar formato a los datos usando una clase

Lo que se pretende es poder llegar a dar formato a información usando una clase, que no instanciaremos.
Para ello se necesita que nos creemos en la carpeta App_Code de nuestro proyecto un archivo de clase que llamaremos Funciones.vb o lo que nos parezca.
El código de dicha clase:

Imports Microsoft.VisualBasic

Public Class Funciones
Public Shared Function FormatoCadena(ByVal Valor
As String, ByVal Formato As String) As String
Dim ValorFormato As
Double
Dim Cadena As String
ValorFormato = Valor
Cadena =
ValorFormato.ToString(Formato)
Return Cadena
End Function
End
Class

Esta clase podrá ser llamada sin ser instanciada desde cualquier parte del proyecto. Así si deseamos que se puede llamar desde un FormView, cómo fue el caso que a mí me ocupó, accederemos a través de la etiqueta inteligente a la plantilla donde esté el campo al que aplicaremos formato, y accederemos a través de su etiqueta inteligente a "Editar DataBinding ...".
Activaremos "Personalizar enlace" y en la expresión de código pondremos:
Funciones.FormatoCadena(Eval("Telefono1"), "### ## ## ##")

También se podría evitar poner Funciones haciendo un Imports o agregandolo convenientemente en web.config.

Páginas de ayuda con información de formatos:

http://authors.aspalliance.com/aspxtreme/sys/globalization/demos/DateTimeFormatInfoGetAllDateTimePatterns.aspx
http://msdn2.microsoft.com/es-es/library/az4se3k1(VS.80).aspx
http://msdn2.microsoft.com/es-es/library/dwhawy9k(VS.80).aspx
http://msdn2.microsoft.com/es-es/library/0c899ak8(VS.80).aspx

Nada más.

jueves, 13 de diciembre de 2007

Control FreeTextBox y Formview

Si quieres utilizar un FreeTextBox en un Formview no podrás establecer el databinding desde la vista diseño. Hay que hacerlo a mano, en la vista código, localizas la sección FTB, añades el atributo text y estableces la vinculación. Quedaría algo así como :

miércoles, 24 de octubre de 2007

Diversos ejemplos del uso del parámetro "e" en eventos de actualización

En el evento ItemInserted de un FormView, para acceder al valor de un campo del registro recién insertado:

e.Values.Item("NombreCampo").ToString()


En el evento RowUpdating de un GridView, o en el ItemUpdating de un FormView, para hacer comprobaciones de validez de datos:

'no permitir dejar vacío el primer campo
If e.NewValues().Item(0) Is Nothing Then
   darAviso("No puede dejar vacío el campo X")
   e.Cancel = True
   Exit Sub
End If
'obligar a que el nuevo valor sea diferente al viejo
If (e.NewValues().Item(0).ToString = e.OldValues().Item(0).ToString) Then
   darAviso("Debe cambiar el valor del campo X")
   e.Cancel = True
   Exit Sub
End If


También a través de "e" se puede acceder a la colección Keys definida en el control para establecer los campos que conforman la clave de nuestro conjunto de datos. Por ejemplo en un RowDeleting de un GridView podemos hacer comprobaciones de integridad antes de cargarnos la fila:

If hayRegistrosDependientes(e.Keys.Item("Id").ToString()) Then
   e.Cancel = True
   darAviso("Imposible borrar. Dejas la BD hecha un solar")
End If


Los ejemplos son un poco simples, pero que cada uno los complique tanto como quiera, o como necesite.

Hale!

martes, 16 de octubre de 2007

Inicializar campos al insertar nuevo registro en FormView

Se puede hacer en otros eventos, pero yo lo tengo en el evento ItemCreated del Formview, comprobando que se está en modo insercción.

Por ejemplo, para inicializar a "0" un textbox llamado "TBAntiguedad" en el templated de inserción del FormView1:

Protected Sub FormView1_ItemCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.ItemCreated

If (FormView1.CurrentMode = FormViewMode.Insert) Then
 Dim txtBox As TextBox = CType( FormView1.Row.FindControl("TBAntiguedad"), TextBox)
 If Not (txtBox Is Nothing) Then
  txtBox.Text = "0"
 End If
End If
End Sub