Stringa di formato non funziona
-
04-10-2019 - |
Domanda
Sto cercando di visualizzare un numero, memorizzato in un set di dati come una stringa, come un numero di telefono. Ho un etichetta che si lega a un valore, ma non visualizza il formato che ho passato come un ARG:
<asp:Label ID="lbl005108002" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "phone number", "{0:(###) ###-####}") %>'></asp:Label>
Come test ho cercato di passare la stringa formattata nella dataitem, ma che non ha funzionato neanche. C'è qualcos'altro che devo fare per poter utilizzare questa funzione?
m_Row("phone number") = String.Format("{0:(###) ###-####}", value)
Il valore visualizzato in entrambi i casi come: 04152543926
Soluzione
Io preferisco fare l'associazione dati nel mio codebehind:
<asp:Label ID="lbl005108002" runat="server" Text="" OnDataBinding="lbl005108002_DataBinding"></asp:Label>
In codebehind:
protected void lbl005108002_DataBinding(object sender, System.EventArgs e)
{
Label lbl = (Label)(sender);
lbl.Text = String.Format("{0:(###) ###-####}", (int)(Eval("phone number")));
}
Credo che la chiave è che cast int
in modo che il formattatore sa come trattare con il valore che si sta inviando. Preferisco fare questo in codebehind perché a volte cercando di stipare tutto in linea rende le cose meno esplicito.
Altri suggerimenti
Che tipo è il valore? Questo sembra formato ok per me:
int phone_num = 1231231234;
string f = String.Format("{0:(###) ###-####}", phone_num);
Un modo alternativo è:
Dim i As Integer = 5551234567 Dim s As String = i.ToString ( "(###) ### - ####")
Il ToString è il modo più veloce che uso. Quello che ho fatto è in th window eCommand ho fatto questo:
? 5551234567.ToString("(###) ###-####")
Il risultato è stato:
"(555) 123-4567"
Quindi sono sicuro che funziona. Buona fortuna!