Вы ищете 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-GB}
Что-то вроде этого, следует сделать трюк (не проверено)
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 можно explicatlly установить DataTable Cultureinfo
CultureInfo ci = new CultureInfo("en-GB");
myTable.Locale = ci;
Если вы ищем системную поддержку культуры (о которой я не думаю, что вы, но стоит упомянуть), вы можете посмотреть на использование resource files
Simple example будет:
ResourceManager rm = ResourceManager.CreateFileBasedResourceManager("resource", "path to resouce files", null);
this.Label1.Text = rm.GetString("name");
Я добавил тег asp.net, пожалуйста, поправьте меня, если я ошибаюсь – cgreeno