- PR -

VS2005でGridViewのヘッダーを複数行にする方法

投稿者投稿内容
ミヨ
常連さん
会議室デビュー日: 2006/09/12
投稿数: 21
投稿日時: 2006-09-12 15:12
初めて投稿させていただきます。
いつも@IT会議室を参考にさせていただいていますが、今回どうしても方法がわからなかったので質問させてください。

VS2005、ASP.NET(VB)でWEBサイトを作成しようとしています。
GridViewにデータベースからの結果を表示しているのですが、集計結果を表示する時にヘッダーを2行にしてセル結合させたいと考えております。

|  A  |  B  |
| 1 | 2 | 3 | 4 |

下記ページなど色々検索してみましたがC#ばかりしか見つからずVBでの方法がわかりませんでした。
http://www.atmarkit.co.jp/fdotnet/dotnettips/095multiheader/multiheader.html

方法・対策などご教授宜しくお願い致します。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-09-12 15:23
C#もVB.NETもやり方は同じです。

C#のコードをVB.NETへ変換する: .NET Tips: C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/links/convertcs2vb.html

Amazon.co.jp: C#&VB.NET比較ガイド―Converting code from one language to another: 本: Jose Mojica,デジタルアドバンテージ
http://www.amazon.co.jp/gp/product/4873111072/ref=sr_11_1/503-1901516-2335156?ie=UTF8
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-09-12 15:24
同じ話題??
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33522&forum=7&2
ミヨ
常連さん
会議室デビュー日: 2006/09/12
投稿数: 21
投稿日時: 2006-09-12 15:40
早速のご教授ありがとうございます。

burton999さま
「C#のコードをVBに変換する」という発想がまったく思いつかず、こんなに便利なサイトがあるとは知りませんでした。
早速このページを参考に調べていこうと思います。
ありがとうございました。

かるあさま
同じですね・・・すみません。
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html#i30
上記ページは何度も読んでいたのですが、なにぶんC#ばかりしかありませんでしたので悩んでおりました。
ミヨ
常連さん
会議室デビュー日: 2006/09/12
投稿数: 21
投稿日時: 2006-09-12 16:44
申し訳ありません。引き続き質問させて下さい。
C#のコードをVBに変換しつつコードを記入してみましたがエラーが起こってしまいました。

Dim cell As TableCell = New TableCell()
Dim row As DataGridItem = New DataGridItem(-1, -1, ListItemType.Header)
cell.ColumnSpan = 2
cell.Text = "A"
row.Cells.Add(cell)

cell.ColumnSpan = 2
cell.Text = "B"
row.Cells.Add(cell)

GridView.Controls(0).Controls.AddAt(0, row)
↑ここで「ArgumentOutOfRangeExceptionはユーザーコードによってハンドルされませんでした。」と表示されます。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24303&forum=7&start=8
上記ページも読みましたが初心者の私にはわかりませんでした。
申し訳ありませんがご教授宜しくお願い致します。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-09-12 18:03
引用:

ミヨさんの書き込み (2006-09-12 16:44) より:

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24303&forum=7&start=8


僕も上記と見比べて見ました。

Dim row As DataGridItem = New DataGridItem(-1, -1, ListItemType.Header)

この部分が違っているように思いました。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-09-12 18:10
引用:

ミヨさんの書き込み (2006-09-12 16:44) より:

GridView.Controls(0).Controls.AddAt(0, row)
↑ここで「ArgumentOutOfRangeExceptionはユーザーコードによってハンドルされませんでした。」と表示されます。


どこで例外が出たのかがわかっているなら、
この場所でブレイクポイントを設定して、
GridView.Controls の中身を確認してみてください。

ん?GridVew?これって型ですか??
さらに、GridView に突っ込むなら DataGridItem では無く、GridViewRow になるかな
ミヨ
常連さん
会議室デビュー日: 2006/09/12
投稿数: 21
投稿日時: 2006-09-12 20:34
R・田中一郎さま
ご教授ありがとうございます。
質問させていただいた後に私もこの部分が違うことに気付き
Dim row As DataGridItem = New DataGridItem(-1, -1, ListItemType.Header)

Dim row As DataGridItem = New DataGridItem( 0, 0, ListItemType.Header)
に変更してみましたが同じエラーが出てしまいました。

未記入さま
ご教授ありがとうございます。
もう一度ブレイクポイントで中身を確認して細かくチェックしてみます。
>GridView に突っ込むなら DataGridItem では無く、GridViewRow になるかな
Dim row As DataGridRow = New DataGridRow(-1, -1, ListItemType.Header)
…ということでしょうか?
変更して確認してみます。ありがとうございました。

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