ユーザーが選択した通貨 ComboBox の通貨に基づいて、DataGridView の価格列を変更したいと思います。
現在、価格列は「C2」にフォーマットされています。これはデフォルトで「$1.00」のようになります。
ただし、ユーザーが通貨を英国ポンドに切り替える場合、ドル記号 (「$」) ではなく英国ポンド記号 (「£」) を表示して、最終結果が £1.00 になるようにします。 .
DataGridView のカルチャを変更する方法について何か提案はありますか?
前もって感謝します!
ユーザーが選択した通貨 ComboBox の通貨に基づいて、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 イベントにフックしてそのように再フォーマットする必要があります。 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 からバインドしている場合は、明示的に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");