将 ItemTemplate GridView 金钱项目格式化为千位分隔符 ASP.NET?
Format ItemTemplate GridView money item to thousand seperator ASP.NET?
我在 SQL 服务器 table 中有 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>
但它只有 display: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 位数字。怎么办?
既然是字符串,为什么不直接使用子字符串呢?
就像:
return tmp.Substring(0, tmp.Length - 4);
无论如何..你把它转换成十进制然后重新格式化它应该可以工作
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;
}
也许你可以试试这个
salary = salary.Replace(".", "");
salary = salary.Replace(",", "");
string tmp = (Convert.ToInt64(salary)).ToString("N", new CultureInfo("en-US"));
您没有使用任何功能"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>
我在 SQL 服务器 table 中有 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>
但它只有 display: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 位数字。怎么办?
既然是字符串,为什么不直接使用子字符串呢?
就像:
return tmp.Substring(0, tmp.Length - 4);
无论如何..你把它转换成十进制然后重新格式化它应该可以工作
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;
}
也许你可以试试这个
salary = salary.Replace(".", "");
salary = salary.Replace(",", "");
string tmp = (Convert.ToInt64(salary)).ToString("N", new CultureInfo("en-US"));
您没有使用任何功能"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>