GridView控件中DataFormatString属性失效解决方法

使用GridView控件BoundField列的DataFormatString属性,我们可以非常方便的设置字段值的显示格式,例如下边代码:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable tab = new DataTable();

            tab.Columns.Add(new DataColumn("money", System.Type.GetType("System.Single")));
            tab.Rows.Add(1.0001F);
            tab.Rows.Add(2.0001F);
            tab.Rows.Add(3.0001F);
            tab.Rows.Add(4.0001F);
            tab.Rows.Add(5.0001F);

            GridView1.DataSource = tab;
            GridView1.DataBind();
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField DataField="money" DataFormatString="¥{0:N2}"
                    HeaderText="money" />
            </Columns>
        </asp:GridView>
    </div>
    
    </form>
</body>
</html>

奇怪的是同样的代码,在本地测试时DataFormatString属性能起作用,但传到服务器上时却失效了:



后来查MSDN,尝试设置HtmlEncode属性值为False才得以解决:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="money" DataFormatString="¥{0:N2}"
            HeaderText="money" HtmlEncode="False" />
    </Columns>
</asp:GridView>


评论: 0 | 引用: 0 | 查看次数: 4818
发表评论
登录后再发表评论!