我想根据用户选择的货币组合框的货币更改我的 DataGridView 上的定价列。
目前,价格列的格式为“C2”。这默认看起来像“$ 1.00”。
但是,如果我的用户要将货币切换为英镑,我想显示英镑符号(“£”)而不是美元符号(“$”),因此最终结果将是 £1.00 .
有关如何更改 DataGridView 的文化的任何建议?
提前致谢!
我想根据用户选择的货币组合框的货币更改我的 DataGridView 上的定价列。
目前,价格列的格式为“C2”。这默认看起来像“$ 1.00”。
但是,如果我的用户要将货币切换为英镑,我想显示英镑符号(“£”)而不是美元符号(“$”),因此最终结果将是 £1.00 .
有关如何更改 DataGridView 的文化的任何建议?
提前致谢!
您正在寻找System.Globalization。有很多不同的选择......
如果您只想为该特定元素更改它:
//Label example but theory is the same
[CultureInfo][2] ci = new CultureInfo("en-GB");
double myMoney = 100.00;
this.Label1.Text = myMoney.ToString("C2", ci);
如果您想为所有内容更改它,那么您可以
//Will format everything
string strCulture = "en-GB";//Session["culture"].ToString();
[CultureInfo][3] ci = new CultureInfo(strCulture);
Thread.CurrentThread.[CurrentCulture][4] = ci ;
Thread.CurrentThread.[CurrentUICulture][5] = ci;
double myMoney = 100.00;
this.Label1.Text = myMoney.ToString("C2");
在 DataGird 中,如果您尝试格式化数据绑定行,则需要挂钩 onDataBound 事件并以这种方式重新格式化,因为我不相信您可以将参数传递为:DataFormatString = "{0:c,en-国标}
像这样的东西应该可以解决问题(未经测试)
protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Define CultureInfo in page scope just put in example for reference
[CultureInfo][6] ci = new CultureInfo("en-GB");
if (e.Row.RowType == DataControlRowType.DataRow)
((Label)e.Row.FindControl("myMoney")).Text.ToString("C2", ci);
}
或者
如果您要从 DataTable 绑定,则可以明确设置DataTable Cultureinfo
CultureInfo ci = new CultureInfo("en-GB");
myTable.Locale = ci;
如果您正在寻找系统范围的文化支持(我认为您不是但值得一提),那么您可以查看使用资源文件
简单的例子是:
ResourceManager rm = ResourceManager.CreateFileBasedResourceManager("resource", "path to resouce files", null);
this.Label1.Text = rm.GetString("name");