我对GridView列格式有问题。
我有一个PhoneNumber
目前来自数据库(###)### - #####
但我希望格式为############,没有间距和括号。我尝试了DataFormatString="{0:###-####}"
之类的所有内容,或者将其转换为 TemplateField 并为其提供格式但不起作用。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:TemplateField HeaderText="Phone Number">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#
Bind("PhoneNumber") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("PhoneNumber", "{0:d}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这是在将列转换为 TemplateField :
之前 <asp:BoundField DataField="PhoneNumber" HeaderText="Phone Number Home"
SortExpression="Phone" DataFormatString="{0:######-####}" HtmlEncode="false" />
但没有任何效果。我仍然可以获得这样的电话号码格式(123) 123-4567
。
答案 0 :(得分:1)
如果要动态绑定代码中的行,则应格式化gridview的DataBind事件中的列。
语义列格式化仅在语义上使用绑定数据时有效,例如声明
答案 1 :(得分:1)
尝试替换 TemplateField 中的Text
属性:
Text='<%# Bind("PhoneNumber", "{0:d}") %>'
使用:
Text='<%# String.Format("{0:##########}",
Convert.ToInt64(DataBinder.Eval(Container.DataItem, "PhoneNumber")))%>'
答案 2 :(得分:0)
格式化只是加法的,而不是减法的。要实现此目的,您需要公开已删除非数字的值的版本,以便客户端格式化可以对其进行操作。