- PR -

[ASP.NET(VB)]自動生成したDataGrid

1
投稿者投稿内容
es
常連さん
会議室デビュー日: 2003/08/18
投稿数: 20
投稿日時: 2003-09-29 22:10
いつも解説ありがとうございます。
今回はDataDridについて解らない部分があるので、よろしくお願いします。
現在、手元にソースがないので説明不十分になるかもしれませんが、ご了承ください。

状況に応じてSQL文を発行して、動的に自動生成してます。
SQL文よって表示内容が当然異なるのでカラムの幅は統一するわけにはいきません。
中にはフラグデータで0か1だけのもの。住所のように長いデータもあります。実行するとおおくは、カラム名の長さ程度の幅(そうでないものもある)になってしまい。フラグデータの幅が広く、住所データの幅が3文字程度折り返しされ、縦長のセルになってしまい。データも非常に見にくくなってしまいます。データに合わせて横に長いぶんには全然構いません。
(現行)             (理想)
−−−−−−−−−−−−    −−−−−−−−−−−−−−−−−−−−
チェックフラグ|住所|…    チェックフラグ|住所         |
−−−−−−−−−−−−    −−−−−−−−−−−−−−−−−−−−
1      |東京|   → 1      |東京都千代田区…   |
       |都千|     −−−−−−−−−−−−−−−−−−−−
       |代田|     0      |東京都…       |
       |区…|

DataGridプロパティでもVBでもWrapで折り返しをしない設定をしたのですが、まるで効いてません。
過去のレスでは、幅を固定するというものが多く見られましたが、幅をデータの長さにしたいです。
確か表示データが決まってて、DataGridプロパティでDataMemberやDataSourseを指定すると難なく普通にできましたよね?

どなたか、お願いします。

ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-30 00:21
あまり自動生成で使ったこと無いので、質問とは異なりますが
自動生成ではなく動的にカラムを追加してみてはどうでしょう。
SQLを動的に生成しているならカラムもできますよね。

grid.Columns.Add(new BoundColumn());
((BoundColumn)grid.Columns[0]).DataField = "チェックフラグ";
grid.Columns[0].ItemStyle.Wrap = false;
ophiuchus
会議室デビュー日: 2003/08/27
投稿数: 11
投稿日時: 2003-09-30 09:03
DataDridのItemCreatedイベントで全てのセルに対して折り返し設定をしてあげれば良くないですか?

コード:
Dim intI As Integer
For intI = 0 To e.Item.Cells.Count - 1
    CType(e.Item.Cells(intI), TableCell).Wrap = False
Next



es
常連さん
会議室デビュー日: 2003/08/18
投稿数: 20
投稿日時: 2003-10-01 00:11
ophiuchusさんありがとうございます。
そのまま活用させていただき、表示がうまくいきました。

ぴでさんいつもありがとうございます。
DataGridを作成してて、やはりこれが.NETの特徴とも言えるので自動生成を活用してたのですが、これからも使っていく上では、ぴでさんの言うように、動的にカラムを生成していった方がいいですね。今回は自動生成でやったのですが、DataGridについてまだまだ勉強しないといけない事ばかりです。
1

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