Вы ищете 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 , ru-RU}
Нечто подобное должно сработать (не проверено)
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);
}
OR
Если вы связываете из 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");