Question

Je suis en train d'afficher un numéro, stocké dans un jeu de données sous forme de chaîne, comme un numéro de téléphone. J'ai une étiquette qui se fixe à une valeur, mais n'affiche pas le format que j'ai passé comme arg:

<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 quelque chose d'autre que je dois faire pour pouvoir utiliser cette fonction?

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

La valeur affiche dans les deux cas comme: 04152543926

Était-ce utile?

La solution

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 clé est que CAST pour int afin que le formatter sait comment faire face à la valeur que vous l'envoyez. Je préfère le faire dans codebehind parce que parfois essayer de caser tout en ligne qui rend les choses moins explicites.

Autres conseils

De quel type est la valeur? Cela semble au format ok pour moi:

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

Une autre façon est:

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

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

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

Le résultat était:

"(555) 123-4567"

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top