こんにちは。さまざまな例を見てかなり混乱した後、説明が必要だと思います。
Facebookのログインページに表示されるような、3つのドロップダウンボックスを備えたカスタム日付コントロールを作成している最中です。
クライアント側の機能に関してコントロールは正常に機能していますが、サーバー側で値を取得しようとしたときに問題が発生しました。
JavaScriptを介してドロップダウンにデータを入力しているので、サーバー側に移動すると、選択した値を完全に認識していないように見えます。
読んだ後、子コントロールをOnInit関数に移動することにしました。これで、JavaScriptを介してドロップダウンリストにデータを入力するための起動スクリプトを登録するための呼び出しを行います。
それ以来、サーバー側にも値を追加するためにこれを変更する必要がありました。これまでのところ、このように見えます。
protected override void OnInit(EventArgs e)
{
/* create controls and add some JavaScript stuff here*/
/*Problem below*/
if (!Page.IsPostBack)
{
/* These seemably have to be here inspite the fact we can populate with java, issue: on postback selected values are lost. */
for (int i = 1; i <= 31; i++)
{
ddlDay.Items.Add(new ListItem(i.ToString()));
}
for (int i = 1; i <= 12; i++)
{
ddlMonth.Items.Add(new ListItem(i.ToString()));
}
for (int i = 1901; i <= 2012; i++)
{
ddlYear.Items.Add(new ListItem(i.ToString()));
}
}
ScriptManager.RegisterStartupScript(this, Page.GetType(), Guid.NewGuid().ToString(), "<script type='text/javascript'>DateControlRender(document.getElementById('" + this.ClientID + "'));</script>", false);
base.OnInit(e);
}
とにかく私はこれを回避することができますか?私の主な懸念は、これによりページサイズが大幅に増加することです。
前もって感謝します。
よろしくお願いします
デイブ