- PR -

(VS2003)DataGridに動的に追加した列がPostback後に消える

1
投稿者投稿内容
NVL
常連さん
会議室デビュー日: 2006/04/03
投稿数: 45
投稿日時: 2009-03-11 15:23
いつもお世話になっております。
VS2003でASP.NET(VB)で開発をしております。

(やりたいこと)
・テーブル名がパラメータで渡され、そのテーブルの内容をDataGridで表示したい。
・DataGridに対しては、各テーブル応じた列数を動的に追加したい。
・テーブル情報を基に、INSERT,UPDATE,DELETE文を自動生成する。
・これらを行うことで、簡易的なマスタメンテ機能を動的に実現したい。

グリッドに対するTemplate列の追加やデータのBind表示は出来たのですが、
Postbackすると追加した列が消えてしまうことが判明しました。
(DataGrid.Columns.Countが、デザイナにDataGridを貼り付けたときの状態に
戻ってしまう)

データ表示するだけなら毎回DBにSELECTすれば良いのですが、入力項目もあるので
困っております。こういう仕様なら別の方法を考えようと思っておりますが、
回避する方法があればお教えください。宜しくお願いします。


会議室デビュー日: 2005/02/09
投稿数: 18
投稿日時: 2009-03-11 16:33
以前似たような処理をつくったことがありますが、
動的にカラム追加する場合、Page.Initのタイミングで追加しないと
PostBack時に保持されなかった気がします。
NVL
常連さん
会議室デビュー日: 2006/04/03
投稿数: 45
投稿日時: 2009-03-11 16:59
た様

ご回答いただきありがとうございます。
お教えいただいたとおり、PageInitで毎回生成してやれば、
Postback後も列と項目値が引き継がれました。

最悪、Postback時はユーザの全項目の入力値をJavaScriptでHidden項目に持たせて
Requestで取得し、その値でDataGridを再構築する方法など考えておりました。
あと、予めデザインで100個ぐらいTemplate列を書いておいて、不必要な列は
ロジックでVisibleを制御するとか・・・。DataTable生成ロジックはクラス化
しているので、Callする場所だけ変えれば済みそうです。

どうもありがとうございました。


1

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