- PR -

ASP.NETのDataGridに動的に列(テンプレート列を含む)を作成するには?

1
投稿者投稿内容
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-05-11 10:26
いつもお世話になっております。ASP.NET初心者で御座います。

Asp.NetのPageLoadイベントにてDataGridを動的に作成する場合についての質問です。
条件によりDataGridの列数が動的に変化し、その中にはテンプレート列(TextBox)も含みます。
初期状態は、DataGridを画面に貼り付け、手を加えていない状態です。

どのようにコーディングすればよいのかご教授お願い致します。
背古井
常連さん
会議室デビュー日: 2004/04/02
投稿数: 39
投稿日時: 2005-05-11 17:25
背古井です

以下の方法で一応作成できます。

http://www.microsoft.com/japan/msdn/vs/webapplication/vbtchCreatingWebServerControlTemplatesProgrammatically.asp#vbtchcreatingwebservercontroltemplatesprogrammaticallyanchor1

ただし、このまま作成すると、PAGE_ROADの時に必ず初期化されてしまいます。
つまり、ポストバックの度に再度作成が必要となります。
表示させた後に、その他のアクション(グリッド内のボタンをクリックする等)する場合は注意が必要です。

ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-05-12 18:17
背古井様、ご教授有難う御座います。
また、返信が遅くなってしまい申し訳ございません。

教えて頂いたサイトを参考に実行時にテンプレートを作成することができました。
しかし、Page_Load時に初期化されてしまうところでつまずいています。

処理の流れは、
@Page_Load時にグリッドを作成(動的にテンプレートを追加)
Aクライアント側で追加したテンプレートに入力
Bコマンドボタンクリックイベントにてテンプレートの入力値を取得し、DB更新
です。

BでPostBackが発生した時点で入力値が失われない様にすることが可能ですか?
もし、不可能な場合は、今回の様な処理はどうすればよろしいのでしょうか?

お忙しい中申し訳御座いませんが、どうぞ宜しくお願い致します。

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-05-12 18:29
動的なコントロールの追加はPage.LoadではなくPage.Initでやるのが吉です。
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-05-16 10:18
背古井様、todo様、お世話になっております。
返信が遅くなってしまい申し訳御座いません。

todo様からのご指摘通りPage.InitにてDataGridを動的に作成したところPostBackが発生した場合にも入力値が失われることがなくなりました。

皆様のご親切なアドバイスに感謝致します。
これからもどうぞ宜しくお願い致します。
1

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