Dar formato a una celda de un DataGrid (VB.NET)

15/11/2005 - 17:17 por fossie | Informe spam
Hola amigos, espero que alguien me pueda ayudar con mi problema.

Cuando muestro una cadena de texto (string) en una columna de un DataGrid
(DataGridTextBoxColumn) no se como aplicarle un formato determinado.
Me gustaria que si el texto de la cadena tiene x caracteres (por ejemplo 6
caracteres) se formatease de una forma y si tiene y caracteres (por ejemplo
10) se formatease de otra.
Es decir si en la columna aparecen los valores 123456 (un string) que el
formato aplicado sea 1-234-56 y si el valor de la columna es 1234567890 (un
string) que el formato sea 12-345-6789-0
Si la cadena no tiene ni 6 ni 10 caracteres de tamaño se mostrará tal cual,
sin formato.

Se que las columnas tienen la propiedad Format pero no se como indicarle que
aplique un formato u otro dependiendo de lo explicado anteriormente.
He leido que seria posible hacerlo creando un tipo de datos que implemente
la interface IFormatable pero no se muy bien como hacerlo.
El caso es que yo quiero que el tipo de datos sea un string pero quisiera
poder aplicarle un formato especial que verifique el tamaño de la cadena y
haga una cosa u otra.

Una vez creada la Interface IFormatable como se le asigna a una columna del
DataGrid?

Muchas gracias.
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
16/11/2005 - 02:10 | Informe spam
Si es solo en un datagrid lo mas simple es crear un tipo de columna heredado
de DataGridTextBoxColumn en el cual realices el formateo. Mas o menos asi:

Class MiColumna
Inherits System.Windows.Forms.DataGridTextBoxColumn

Protected Overrides Function GetColumnValueAtRow( _
ByVal source As System.Windows.Forms.CurrencyManager, ByVal
rowNum As Integer) As Object

' Obtengo el valor desde el metodo de la clase base
Dim valor As String = MyBase.GetColumnValueAtRow(source,
rowNum).ToString

Select Case valor.Length
Case 6
Return valor ' Formatear valor si tiene 6 caracteres
Case 10
Return valor ' Formatear valor si tiene 10 caracteres
Case Else
Return valor
End Select

End Function

End Class

Luego deberas usar ese estilo en un tablestyle y listo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Preguntas similares