GridView でセルを結合する方法の補足

前回の記事 (GridView でセルを結合する方法) の補足です。 *1

セルの結合に使用する GridViewJoin クラスの使用法を説明します。基本的には、ソースコードのコメントで書いている内容と同一です。

まず、セルの結合を考慮せずに GridView クラスを使用してデータを表示します。 GridView にデータを表示することができたら、 GridView.DataBind() の後に以下の内容を記述します。 ObjectDataSource などを利用してデータ結合を行っている場合は、 Page_Load() 内 (ポストバックでない場合) に以下のコードを記述します。

GridViewJoin joiner = new GridViewJoin(対象の GridView, GridView 内のキーとなる列番号);
joiner.AddRelationToKey(キーにひも付いて結合される列番号);
joiner.AddRelationToKey(キーにひも付いて結合される列番号);
// 同時に結合したい列の数だけ AddRelationToKey() を繰り返す
// joiner.AddRelationToKey(キーにひも付いて結合される列番号);
joiner.Apply();

以上で、 GridView のセルを結合することができます。このとき、結合するかしないかの判断は、「GridView 内のキーとなる列番号」の上下の行が同じかで行われ、列が結合されるとき AddRelationToKey() で指定した列も同時に結合されます。

今後は需要により、 GridView にスクロールバーをつけたり、ヘッダ固定をしたりする方法を解説するかもしれません。

*1:さらに蛇足。 Web システムで GridView (DataGrid) のヘッダやセルを Excel のように結合して使うという方向は避けた方が無難です。どうしても結合したい場合は、スマートクライアントにして DataGridView を使用するか、サードパーティコンポーネント購入を検討するのをおすすめします。