将ItemTemplate GridView项目格式化为千位分隔符ASP.NET?

时间:2015-09-07 05:57:11

标签: c# asp.net sql-server gridview currency

我在SQL Server表中使用money类型的Salary字段,在我使用的GridView ItemTemplate中:

<asp:TemplateColumn ItemStyle-CssClass="Text">
    <HeaderTemplate>Basic Salary</HeaderTemplate>
        <ItemTemplate>
            <%# DataBinder.Eval(Container, "DataItem.BasicSalary", "{0:0,0}")%>
        </ItemTemplate>
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
</asp:TemplateColumn>

但它只显示:6500000.0000我想要的一个是:6,500,000。那该怎么办?请帮忙! 如果我使用这个功能:

protected string Format_Number(string Number)
{
    Number = Number.Replace(".", "");
    Number = Number.Replace(",", "");
    var tmp = "";
    while (Number.Length > 3)
    {
        tmp = "." + Number.Substring(Number.Length - 3) + tmp;
        Number = Number.Substring(0, Number.Length - 3);
    }
    tmp = Number + tmp;
    return tmp;
}

然后在ItemTemplate中:

<ItemTemplate>
    <asp:label ID="lblSalary" 
               runat="server" 
               Text='<%# Format_Number(DataBinder.Eval(Container.DataItem, "Salary").ToString()) %>'>
    </asp:label>

输出是:     6.500.000.000我想剪掉最后3位数。怎么办?

4 个答案:

答案 0 :(得分:1)

无论如何..你把它转换成十进制然后重新格式化它应该工作

 protected string Format_Number(string Number)
 {
    // Variable
    string value = string.Empty;
    decimal castValue = 0;
    bool isValid = false;

    // Check
    if (Number != string.Empty)
    {
        // Parse
        isValid = decimal.TryParse(Number, out castValue);

        // Check & Set Decimal Valud
        if (isValid) value = castValue.ToString("0,0");
    }


    return value;
 }

答案 1 :(得分:0)

因为它是一个字符串,为什么不简单地使用子字符串?

就像:

return tmp.Substring(0, tmp.Length - 4);

答案 2 :(得分:0)

可能你可以试试这个

salary = salary.Replace(".", "");
salary = salary.Replace(",", "");
string tmp = (Convert.ToInt64(salary)).ToString("N", new CultureInfo("en-US"));

答案 3 :(得分:0)

您不使用任何函数“Format_Number(string Number)”。直接绑定为货币数据类型。这对我有用。

<asp:TemplateField HeaderText="Basic Salary">
                <HeaderTemplate>Basic Salary</HeaderTemplate>
                <ItemTemplate>
                    <%# DataBinder.Eval(Container, "DataItem.BasicSalary", {0:0}")%>
                </ItemTemplate>
                <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
            </asp:TemplateField>