@ledsun blog

無味の味は佳境に入らざればすなわち知れず

ASP.NET GridViewのヘッダ固定スクロール IE8以降

スタイルシートの用意。scroll1クラスをtableに指定します。 *1

.scroll1 thead, .scroll1 tbody
{
    float: left;
}
.scroll1 tbody
{
    height: 100px;
    overflow-y: scroll;
}

GridViewはデフォルトではtheadを生成しないので、次のおまじない*2 *3

GridView1.DataSource = HogeList;
GridView1.DataBind();
if (GridView1.Rows.Count > 0))
{
    GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
}

でも、ASP.NET4以降ならGirdViewは使わないでListViewを使いましょう。

プログラミングMicrosoft ASP.NET 4 (マイクロソフト公式解説書) 独習 ASP.NET 第3版 はじめてのASP.NET4プログラミング Visual C#編 (TECHNICAL MASTER) ASP.NETでいってみよう (DB Magazine SELECTION) ASP.NET の絵本

*1:theadとtbodyにfloat: leftを指定するとthとtdの幅が別々に計算されます。カラムごとに幅を指定する場合はthとtdの両方に指定します。

*2:TableSectionの値はDataBindするたびに初期値に戻ります。

*3:0件の時にGridView1.HeaderRow.TableSection = TableRowSection.TableHeaderを指定すると例外が発生することがあります。