2010-05-26 8 views
1

J'essaie d'afficher un nombre, stocké dans un ensemble de données sous la forme d'une chaîne, comme un numéro de téléphone. J'ai une étiquette qui se fixe à une valeur, mais ne présente pas le format que je suis passé en tant arg:Chaîne Format ne fonctionne pas

<asp:Label ID="lbl005108002" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "phone number", "{0:(###) ###-####}") %>'></asp:Label> 

Comme un test j'ai essayé de passer la chaîne formated dans le dataitem mais cela ne fonctionne pas non plus . Y at-il autre chose que je dois faire pour utiliser cette fonction?

m_Row("phone number") = String.Format("{0:(###) ###-####}", value) 

La valeur affiche dans les deux cas comme: 04152543926

Répondre

4

Je préfère faire la liaison de données dans mon behind:

<asp:Label ID="lbl005108002" runat="server" Text="" OnDataBinding="lbl005108002_DataBinding"></asp:Label> 

En behind:

protected void lbl005108002_DataBinding(object sender, System.EventArgs e) 
{ 
    Label lbl = (Label)(sender); 
    lbl.Text = String.Format("{0:(###) ###-####}", (int)(Eval("phone number"))); 
} 

Je pense que la la clé est cette cast à int de sorte que le formateur sait comment traiter la valeur yo Vous l'envoyez. Je préfère faire cela dans codebehind parce que parfois essayer de tout bourrer en ligne rend les choses moins explicites.

+0

Merci, il semble que je devais le convertir en int et c'est ce que je ne faisais pas – NomadicDeveloper

0

Quel type est la valeur? Cela semble formater ok pour moi:

 int phone_num = 1231231234; 
    string f = String.Format("{0:(###) ###-####}", phone_num); 
0

Une autre façon est:

Dim i as Integer = 5551234567 Dim s As String = i.ToString ("(###) ### - #### ")

Le ToString est la méthode rapide que j'utilise. Ce que je l'ai fait est e fenêtre eCommand Je l'ai fait:

? 5551234567.ToString("(###) ###-####") 

Le résultat a été:

"(555) 123-4567" 

Je suis sûr que cela fonctionne. Bonne chance!