- - PR -
DataGridで同一列内のセルを結合
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-07-22 17:57
いつもお世話になっております。
ASP.NETでDataGridを使い、表を作成しています。 その際、同一列内のセルを結合したく、以下のサイトを参考にしました。 http://www.atmarkit.co.jp/fdotnet/dotnettips/092joincells/joincells.html 例えば、結合する前は以下のような表だったとします。 列3はVisible=Falseとし、画面には表示しないようにします。 ______________ 列1 | 列2 | 列3 | ______________ あ | い | う | ______________ あ | え | お | ______________ か | き | く | ______________ 列1の結合を行い、以下のような表示に変えたいと思います。 列3は非表示なので、画面上には表示されません。 _________ 列1 | 列2 | _________ | い | あ _____ | え | _________ か | き | _________ 先ほどのサイトを参考に、上記を試したのですが、 結果としては、以下のようになってしまいました。 _________ 列1 | 列2 | _________ | い | あ __________ | え | お | ______________ か | き | _________ 【問題】 2行目の3列目が画面上に表示されてしまいます。 @ITに掲載されていた関数をそのまま使った場合に上記の結果となったため、ロジックを抜粋し、 1行目1列目のrowspan=2に設定してから、2行目1列目のセルを削除する処理だけにしても同じ結果になりました。 また、列2のWidthが列1のWidthと同じ値に変わってしまいました。 調査したところ、1行目1列目のrowspan=2にした時点で、2行目の3列目が画面に表示されてしまうようです。 上記を回避する事はできるのでしょうか? 【環境】 Visual Studio.NET 2002 宜しくお願い致します。 | ||||
|
投稿日時: 2005-07-22 20:21
削除しないからですよ。
http://www.atmarkit.co.jp/fdotnet/dotnettips/091joinheader/joinheader.html ちげ〜 列じゃなくて行か。 まぁ、原因は同じ。下のセルを削除してください。 [ メッセージ編集済み 編集者: Jitta 編集日時 2005-07-22 20:23 ] なんか、まだちげ〜 もう一度「お」のセルの Visible を false に設定しなければならない、かな?セルを削除することで列がずれるので、プロパティが変わったのだと思います。 [ メッセージ編集済み 編集者: Jitta 編集日時 2005-07-22 20:25 ] | ||||
|
投稿日時: 2005-07-22 20:58
> 1行目1列目のrowspan=2に設定してから、2行目1列目のセルを削除する処理だけにしても同じ結果になりました。
2行目1列目のセルを削除するのではなく、非表示にするとか。 | ||||
|
投稿日時: 2005-07-22 21:02
ご返答ありがとうございます。
todoさんの方法で成功しました!ありがとうございます。 また、Jittaさんの方法で、「お」の列を非表示にしてみましたが、非表示になってくれませんでした。 (DataGrid1.Columns(2).Visible = False) 宜しくお願いします。 | ||||
|
投稿日時: 2005-07-22 22:23
列?「セル」って書いてないっけ? > もう一度「お」のセルの 「お」の行の、第1列を消すことで、「お」のセルの所属が第2列に変わります。ここで表示になっていると思います。RowSpan の設定は、コレクションには影響を与えず、ブラウザで表示されるときに解釈されるものです。このため、「お」のセルだけ表示されていると思います。 _________________ | ||||
|
投稿日時: 2005-07-25 21:40
ご連絡遅くなりました。
すいません、「列」と「セル」を読み違いました 再度、Jittaさんに教えて頂いた方法を試したところ余分な列が上手く消えてくれました。 ただ、最初に記述した「列2のWidthが列1のWidthと同じ値に変わってしまう」状況は改善されませんでした。 もう少し調べてみたいと思います。 | ||||
|
投稿日時: 2005-07-26 19:50
> 「列2のWidthが列1のWidthと同じ値に変わってしまう」状況は改善されませんでした。
まず、HTML ソースを確認してみましょう。これも同じじゃないかなぁ?ただ、そうだとすると、面倒なことに各行で width を設定し直さなければならなくなります。 _________________ | ||||
|
投稿日時: 2005-07-26 21:43
うちはVS.NET2003ですが、これで幅もプロパティビルダで設定したままの値になりました。
もしかしてVS.NET2002は動きが違う?
|
1