次のようなコードを使用して、コード ビハインド ファイルで動的テーブルを作成します。
<table border="0" cellpadding="4" cellspacing="0">
<asp:PlaceHolder ID="PlaceHolder1" EnableViewState="false" runat="server"></asp:PlaceHolder>
</table>
Page_Load() でそれを構築する方法は次のとおりです。
System.Web.UI.HtmlControls.HtmlGenericControl trContainer0 = new System.Web.UI.HtmlControls.HtmlGenericControl("tr");
System.Web.UI.HtmlControls.HtmlGenericControl tdContainer00 = new System.Web.UI.HtmlControls.HtmlGenericControl("td");
//Time variable
DateTime dtDateTime0 = DateTime.Now();
//Time (must be localized)
TextBox tbxAtTime = new TextBox();
tbxAtTime.EnableViewState = false;
tbxAtTime.ID = "myTime1";
tbxAtTime.Text = dtDateTime0.ToShortTimeString();
tdContainer00.Controls.Add(tbxAtTime);
trContainer0.Controls.Add(tdContainer00);
PlaceHolder1.Controls.Add(trContainer0);
これにより、tbxAtTime
テキスト ボックスが正しく読み込まれますが、そのページのカスタム コントロールからカルチャを変更して (ポストバック経由で) 読み込ませると、問題が発生します。その場合、tbxAtTime
テキスト ボックスは古い値を保持しているように見えます。ページの最初の読み込み中に取得しましたが、コードにブレークポイントを配置すると、新しいテキストが表示されます (新しい文化に従って)。
では、ここでのトリックは何ですか?