- PR -

DataGridの自動生成された列を取得するには

1
投稿者投稿内容
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2002-07-21 14:01
はじめまして、現在VB.NETにてWebアプリケーションを組んでいます。

以前の過去ログなども調べてみたのですがそれらしいスレッドを
見つけることが出来なかったので質問させてください。

あるページにDataGridを貼り付けて使用しています。
DataGridのカラムの自動生成はオンはしてあり、事前に指定してあるのは
一列のみで、後の列はデータバインドに自動的に付加されるようになっています。
ところが、このデータバインド用のSQL分は私自身が生成するわけではなく
他から生成済みのものが送られてくるため、列名を取得したいと思い、
Page_Loadイベントでデータをバインドした直後にColumnsプロパティを
使って取得しようと試みたところ、バインド後もColumnsプロパティには
実行時以前に生成した一列のみが入っているだけで、自動生成された列は
含まれていませんでした。
デバッガを使ったところautoGenColumnsArrayというオブジェクトの中に
自動生成された列は格納されているようであることを付きとめましたが、
このオブジェクトはコーディング時には指定することができませんでした。

どなたかご存知の方がおられましたら、ヒントだけでも結構ですので
情報を提供願えないでしょうか。
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-07-22 04:21
ヘルプを見るとDataGrid.AutoGenerateColumns プロパティの内容のところに以下の記述があります。

メモ 明示的に宣言された列を、自動的に生成された列と組み合わせて使用できます。両方の列を使用する場合は、明示的に宣言された列が最初に表示され、次に自動的に生成された列が表示されます。自動的に生成された列は Columns コレクションに追加されません。

となりますと、自動生成された列に関する内容を確かめる方法はないような気がします。

不確定な列名を後から取得できれば便利はいいのですが、その必要がないように設計そのものを考えた方がいいのかもしれません。

それとも他に方法があるのかなぁ?
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2002-07-23 00:31
うりゅうさん。情報ありがとうございます。

Columnsに関してはヘルプに記されている情報にすぐに気付いたので、
問題ありませんでした。

ただ、実行時にDataGridをWatchしてるとコーディング中のインテリセンスには
現れないものの、確かにautoGenColumnsArrayオブジェクトがあり、その中に
追加されていた列が入っていたので、何とかこれを実行時に取得する方法は
ないものかと考え、調べていたのですがなかなか見つからなかったので
質問させていただいた次第でした。

とりあえず、おっしゃられるように設計を変える必要があるかもしれませんね。
この件はもう少し継続して調査してみます。

ありがとうございました。
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2002-07-23 04:03
DataGridからデータを取りたいと思っていましたが、
そちらの方はいまだに未解決です。

ですが、とりあえず思った通りのことが行えたため
ご報告させていただきます。

それは、DataGridではなく、DataSet側で列構成を
取得するという方法でした。


DataAdapterのFillメソッド実行後、以下のコードで実現できました。

For i = 0 To (DataSet.Tables(0).Columns.Count() - 1)
DataSet.Tables(0).Columns(i).ToString
Next i

私はDataSetには単一のデータしか格納していないため、TablesのINDEXは
0を使用しています。
1

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