GridView に行番号をつける

FAQ のような記事ですが、 GridView に行番号を表示する方法について説明します。

SQL でデータを取得するときに付加する方法

SQL で行番号を追加するには、 ROW_NUMBER() を使用します。たとえば、以下のような SQL を記述します。 *1

SELECT ROW_NUMBER() OVER (ORDER BY ...) AS NUMBER
	, COLUMN1
	, COLUMN2
-- ...

上記の SQL を実行すると返されるデータに行番号が付加されるため、後は GridView にデータバインドすれば完了です。

データの表示時に付加する方法

GridView にデータを表示するときに行番号を追加するには、以下のように記述します。 DataItemIndex プロパティを参照すると、 GridView でページングを有効にしても、適切な行番号を出力してくれます。

<asp:GridView ...>
<!-- ... -->
	<asp:TemplateField HeaderText="#">
	    <ItemTemplate>
	        <%# Container.DataItemIndex + 1 %>
	    </ItemTemplate>
	</asp:TemplateField>
<!-- ... -->
</asp:GridView>

*1:SQL Server 2005 で可能です。詳細な文法はリファレンスを参照してください。