- PR -

Datagridの列がダブる現象について

1
投稿者投稿内容
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-04-15 12:34
お世話さまです。

ASP.NET(VB)のDatagridの呪縛からなかなか逃れられそうもありません。>_<
今回の現象は下記の通りです。

”Datagridのプロパティビルダで明示的に列を定義しようとすると
列が重複してしまう”という現象です。

具体的な手順としましては…

1.SqlDataAdapterの構成で"SELECT A列,B列,C列 FROM TABLED"というクエリを定義
2.TableDataSet1なるデータセットを生成
3.dgdTableなるDataGridをWEBフォームに貼り付け、プロパティビルダ
  でデータソースにTableDataSet1、データメンバにTABLEDを指定
  (この時点でdgdTableにA列,B列,C列が表示される)
4.列プロパティでA列,B列,C列を選択する
  (さきほどのA列,B列,C列の直後にA列,B列,C列が連結されて表示される)

なぜ4でわざわざ明示的に列を追加するかといいますと、
こうしないとコード内でColumns(0〜2)のプロパティ値をハンドリング
できないからです。

更にこのdgdTableにはコード内でD列、E列、F列…を追加して
更に検索条件を追加してレコードを絞り込みたいのですが、
SqlDataAdapter.SelectCommand.CommandText = "SELECT
D列,E列,F列 FROM TABLED WHERE G列 = ""X01""
のようにするとD列,E列,F列だけに値が入ってA列,B列,C列は空欄
になります。

どのようにすれば宜しいのでしょうか?

皆様のお知恵を拝借できれば幸いです。
いし
常連さん
会議室デビュー日: 2003/04/15
投稿数: 27
投稿日時: 2003-04-15 12:50
AutoGenerateColumnsプロパティがTrueになっているからではないですか?
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-04-15 13:33
===>いし様

早速のレス、ありがとうございます。

AutoGenerateColumnsプロパティはTrueにしています。
そうしておかないとコード内でD、E、F列を動的に追加すること
ができなくなりますよね?

それとも、このプロパティは動的に列を生成(連結)させる
のとは別の意味で使用するものなのでしょうか?
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2003-04-15 14:10
moondogさん、こんにちは。
(今日は間違ったことを教えないように気をつけますネ(^^; )

AutoGenerateColumnsプロパティは、データソースの全フィールドを「自動」で
作成するかどうかというものです。

今回のケースでは、このプロパティはFalseにしておき、dgdTableの
Columnsプロパティ(DataGridColumnCollection)に BoundColumn を「動的」に
追加していく方向で進めてはどうですか?

あと、D列、E列、F列を追加する際、A列,B列,C列が空欄になる方ですが、
dgdTableは、データソースに存在するフィールドに連結されると考えたら
起きている現象の説明は付くかも知れません。
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2003-04-15 14:28
===>Qoo様

こんにちは!
昨日は手取り足取りありがとうございました。

1つの事象が解決したら、こんどはまた別の…
ってカンジで三歩進んで四歩下がっているような気がします。^^;

>AutoGenerateColumnsプロパティは、データソースの全フィールドを「自動」で
作成するかどうかというものです。
な〜る!
All or Nothing型なんですね。(笑)

頂いたアドバイスに沿ってコーディングにチャレンジしてみます。
ありがとうございました。
1

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