- PR -

動的コントロールのPostBack

1
投稿者投稿内容
否かっぺい
常連さん
会議室デビュー日: 2003/02/10
投稿数: 48
投稿日時: 2003-04-03 20:01
いつもお世話になります

Page_Load時にHTMLコントロールのHtmlAnchor(<A>タグ)を動的に作成しているのですが
PostBackされると作成したコントロールが消えてしまいます。
これを残す方法はどういった方法がありますか?
HTMLコントロールでは無理なのでしょうか?

よろしくお願いします。
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2003-04-04 10:38
IsPostBack で falseの場合だけ、コントロールを追加していませんか?

コントロールは、PostBack時に持ち越されて記憶されるわけでは
ないので、毎回作成する必要があります。

ASPX内で記述しているコントロールも、ASP.NET自身が初期化時にコントロールを
毎回作成するコードを吐き出してコンパイルされています。


一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-04-04 11:15
コントロールは、動的に生成した場合でもaspxファイルにタグとして書いた(静的?)場合でも、クライアントにレスポンスを返した時点で全て無くなります。
で、クライアントからポストバックされた時に、ポストバックされた情報とaspxファイルを突き合わせて、オブジェクトを生成しその状態の設定を勝手にしてくれるわけです。

ですので、「作成したコントロールが消え」るというよりは、生成されないという方がニュアンスとして正しいと思います。

やるとすればいのつちさんのおっしゃるように、「毎回毎回、生成してPage.Controls.Add()で追加」などとするしかないと思います。
これは「どのコントロールが何個どこにある」というのをずっと記憶しておかなければならないので非常に面倒でしょう。

もし個数が決まっているのなら、Visibleをfalseにするという方法が良いのでは。
否かっぺい
常連さん
会議室デビュー日: 2003/02/10
投稿数: 48
投稿日時: 2003-04-05 00:13
ご返答ありがとうございます

とりあえず、個数が決まっているので一郎さんご指摘通り最初に作成しておくことにしました。

ありがとうございました。
ひよこ
会議室デビュー日: 2004/02/25
投稿数: 4
お住まい・勤務地: おおさか
投稿日時: 2004-02-25 20:41
横レスですみません。
では動的に作られた個数の決まっていないコントロールに入力したデータを保持しつづけるにはどうすればいいのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-26 00:35
引用:

ひよこさんの書き込み (2004-02-25 20:41) より:

では動的に作られた個数の決まっていないコントロールに入力したデータを保持しつづけるにはどうすればいいのでしょうか?


 基本的に同じ数だけ「必ず作って」やればいいのですが、セッションやビューステートという手があります。
 なお、ポストバックイベントを受けるには、Page_Loadよりも前に作っておく必要があるのではないかと思います。詳しくはイベントの発生順を調べてください。
#初期化→ポストバックデータ受け取り→ビューステート読み込み→ロード
ひよこ
会議室デビュー日: 2004/02/25
投稿数: 4
お住まい・勤務地: おおさか
投稿日時: 2004-02-26 20:21
解答ありがとうございます!
やってみます!
OnInitで生成するのはどうなんでしょうか・・・
1

スキルアップ/キャリアアップ(JOB@IT)