今回は以前に試したGridViewのヘッダー行を1行追加するプログラムの備忘録です。
ヘッダー行を複数行にするとPostBackを行った時に、データバウンドでおかしなことになるのですが、それが避けられるケースで有れば有効かと思います。
私はこの方法を使ったことは無いのですが、将来使うかもしれないし、試していないのですがPDFファイルとGridViewから作成するのに使えるのかな?と思っています。
下の例では、行にデータを張り付けたタイミングで追加しています。
この他にもレンダリングの前でも全てのデータ張付け後でも可能と思います。
Private Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound If e.Row.RowType = DataControlRowType.Header Then Dim row As GridViewRow = New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal) For i As Integer = 0 To 11 Dim cell1 As TableCell = New TableCell() cell1.Text = i.tostring + "月" row.Cells.Add(cell1) Next row.RowType = DataControlRowType.Header Me.GridView1.Controls(0).Controls.AddAt(1, row) endif
プログラムは簡単で、GridViewのRowを定義して、その中にCellを追加し、GridViewにRowを追加するだけです。
尚、追加した行をDataControlRowType.Headerとしているのですが、PostBackして再度データを張り付ける時に、追加したヘッダー行にデータを張り付けようとする動きになりました。
どうしてそのような挙動になるか理由は不明です。
ですから、PostBackするような場合は注意が必要です。
以上、VB.NETでGridViewにヘッダー行を追加するシステム開発備忘録でした。
ps.
PostBack時の不具合の原因ですが、他の調査をしていてわかったかもしれませんので、リンクを貼っておきます。
ASP.NET VB GridViewのヘッダーに行を追加する(修正版)