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

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top