質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

22114閲覧

GridViewのヘッダー部分を一部2段にする方法

doremifa

総合スコア33

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/10/14 06:51

編集2016/10/14 08:13

###前提・実現したいこと
お世話になります。
GridViewのヘッダー部分を一部2段にする方法がわからずとん挫しています。
下記のようなヘッダーを一部2段にしてGridviewで表現することはできないのでしょうか。
※汚くて済みません
'---
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー|
| | ヘッダ B |
| ヘッダA |------------------------|
| | ヘッダC | ヘッダ D |
|=================================|
| ID |データ | データ |
|--------------------------------||
| ID | データ | データ |
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー|

ヘッダAのとなりにヘッダB、そのBの下にCとDがあるようなヘッダをつくりたい

ListViewなら実現できそうだという話もききますがいろいろすでにGridViewでつくってあるので
ここまできたらGridViewで実現したいと考えてます。
よろしくお願いいたします

###RowCreatedでなんとかならないかの検討

if (e.Row.RowType == DataControlRowType.Header) //ヘッダ行をつくって上にくっつけるイメージ GridViewRow row1 = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal); //ここで2段になるヘッダをつくりたい //グリッドに追加 GridView1.Controls[0].Controls.Add(row1); }

###補足情報(言語/FW/ツール等のバージョンなど)
ドットネットフレームワーク4.5.2
C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のようなヘッダーを一部2段にしてGridviewで表現することはできないのでしょうか。

ヘッダだけなら以下の記事にあるようなことをして可能です。(記事には、ヘッダ・列を固定するための質問者さんのやりたいこととは関係ないスタイルの設定も書いてありますが、そこは無視してください)

GridView のヘッダ、列を固定
http://surferonwww.info/BlogEngine/post/2011/04/30/Freezing-GridView-header-and-column.aspx

記事を見ていただければ分かると思いますが、ヘッダを 2 段にするだけでもかなり大変です。このような苦労をしてまで GridView にこだわるより、ListView に切り替えた方が開発工数も保守工数も少なくてすむと思います。(特に保守工数。上の記事は自分で作った例ですが、何がどうなっているのか思い出すのが大変)

なお、データ行を 2 段にするの無理です。もし将来その可能性があるなら、GridView で何とかしようと考えるより、即 ListView を使う方向に進むことをお勧めします。

投稿2016/10/14 08:19

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doremifa

2016/10/14 09:02 編集

何度もありがとうございます。 いただいたサイトを参考にやってみると二段の表示はできました。 ただ、「text-align: center;」のCSSを両方にセットしているのですが colspanで結合されたセルだけ中央よせになりません。 別の書き方が必要でしょうか? ListViewのすすめありがとうございます。 正直なところ無駄なこだわりでGridviewを選択してるなぁという気は 私自身もしていますので別のものをつくるときには最初からListView ありきでやりたいと思います。 が、今回は結構つくってしまったこともあるのでGridView統一で実行し、 Gridviewが何に向いてないのか、何が楽なのか体で目いっぱい学びたいと思います。 よろしくお願いできれば幸いです。
退会済みユーザー

退会済みユーザー

2016/10/14 09:14

「別の書き方」と言われても、そもそもの元の書き方がどうなっているのか分からないので答えようがありません。と言って、元の書き方を示してもらうと言うのも何ですので、私が紹介した記事に書いてあるようなコピペすれば動いて、質問者さんの問題を回答者の方でも再現できるサンプルを作ってアップしていただけませんか?
doremifa

2016/10/14 10:15

アドバイスをお願いしている身で恐縮ですが 名前を変えたりが大変で今のコードからサンプルを出すのは厳しい側面もあります。 差支えない部分を切り出すしかないのですが いただいたサンプルとの違いは .text_center{ text-align: center; } というstyleをつくってあって row1.CssClass = "text_center"; row2.CssClass = "text_center"; のようにしているぐらいなのですが 横に結合しているセルだけ(上の図でいうヘッダーB)が左寄になっているのです。 他は正常にセンタリングされているのですが・・・。
退会済みユーザー

退会済みユーザー

2016/10/14 10:37

それでは自分には分かりません。回答者の方でいろいろ想像して答えるということを期待されているとすれば、自分には無理です。 「差支えない部分を切り出す」か、先に私が紹介した記事のコードをベースに話をすることはできませんか? そうしないと何も具体的なことが分からず、話が進みません。 でも、自分としては、そういうことに時間を費やすより ListView を使うことに方向転換することをお勧めしますが。
退会済みユーザー

退会済みユーザー

2016/10/15 05:25

念のため、先に私が紹介した記事のサンプルコードで、今回の質問とは関係ないヘッダ・列を固定するための処置を削除して(具体的には、(1) Quirks モードに設定するための meta タグをコメントアウト、(2) style タグの中のスタイル .FreezingHeader1 から #freezingDiv までをコメントアウト、(3) GridView の OnPreRender="GridView1_PreRender を削除)結果をみてみましたが、全て期待通りセンタリングされています。 以下の画像(IE9 + F12 開発者ツール)を見てください。 http://surferonwww.info/BlogEngine/image.axd?picture=2016%2f10%2fgridviewheader.jpg 私のサンプルの方では table 要素全体に text-align: center; を設定しているので、table の中の tr, th, td 全部に text-align: center; が適用されます。また、ヘッダのセルは th 要素になるので、仮に text-align: center; がなかったとしてもセンターになります。上の画像の F12 開発者ツールに表示された HTML とスタイルを見てください。 なので、質問者さんは私が提示したサンプルどおりにやってないと思います。質問者さんのコードと私のサンプルを良く見比べてください。 また、質問者さんの方でも F12 開発者ツールを使って、問題の部分が何の要素で、それにスタイルがどのように適用されているか調べてください。 今提供されている情報で自分がお手伝いできるのはここまでです。質問者さんの方がこれ以上情報を提供できないのであれば、この先は自助努力でお願いします。
doremifa

2016/10/17 01:10

他にセレクタの詳細度が深いものがあり、そちらが優先されていたため CSSが反映されていないことが原因でした。 丁寧にご教授くださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問