Cadena de formato no funciona
-
04-10-2019 - |
Pregunta
Estoy tratando de mostrar un número, almacenada en un conjunto de datos como una cadena, como un número de teléfono. Tengo una etiqueta que se une a un valor, pero no muestra el formato que pasé como un arg:
<asp:Label ID="lbl005108002" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "phone number", "{0:(###) ###-####}") %>'></asp:Label>
Como prueba Traté de pasar la cadena con formato en el dataitem pero eso tampoco funcionó. ¿Hay algo más que tenga que hacer con el fin de utilizar esta función?
m_Row("phone number") = String.Format("{0:(###) ###-####}", value)
este valor se muestra en ambos casos como: 04152543926
Solución
Yo prefiero hacer el enlace de datos en mi código subyacente:
<asp:Label ID="lbl005108002" runat="server" Text="" OnDataBinding="lbl005108002_DataBinding"></asp:Label>
En el código subyacente:
protected void lbl005108002_DataBinding(object sender, System.EventArgs e)
{
Label lbl = (Label)(sender);
lbl.Text = String.Format("{0:(###) ###-####}", (int)(Eval("phone number")));
}
Creo que la clave es que la fundición a int
para que el formateador sabe cómo tratar con el valor que se está enviando. Yo prefiero hacer esto en código subyacente porque a veces tratando de meter todo en línea hace que las cosas menos explícita.
Otros consejos
¿Qué tipo es el valor? Esto parece bien para mí formato:
int phone_num = 1231231234;
string f = String.Format("{0:(###) ###-####}", phone_num);
Una forma alternativa es:
Dim i como Integer = 5551234567 Dim s As String = i.ToString ( "(###) ### - ####")
El ToString es la forma más rápida que yo uso. Lo que hice es en º ventana eCommand Hice esto:
? 5551234567.ToString("(###) ###-####")
El resultado fue:
"(555) 123-4567"
Así que estoy seguro de que funciona. Buena suerte!