- PR -

ASP.NET2.0 GridViewでn行置きにHeaderを出す

1
投稿者投稿内容
レイ
会議室デビュー日: 2008/06/09
投稿数: 3
投稿日時: 2008-06-09 20:13
お世話になります。

本日登録させてもらったものです。今後よろしくお願いします。

ところで、件名のような事を行いたいのですが、可能でしょうか。

一覧画面などでデータ行が多い場合、画面をスクロールすると
項目タイトルが見えなくなってしまうので、例えば10行置きに
項目タイトルを表示させたいのですが、うまくいきません。

例えば、GridView の RowCreated イベントで、コントロールを
Add する方法で出来ると思ったのですがどうもうまくいきません。

Select Case e.Row.RowType
Case DataControlRowType.DataRow
e.Row.Cells(0).Controls.Add(createItemTitle())
Case Else
End Select

Private Function createItemTitle(ByVal pNaviID As String) As Table

Dim wTable As Table = New Table 'Table
Dim wTableRow As TableRow = New TableRow 'TableRow
Dim wTableCell As TableCell = New TableCell 'TableCell
Dim wLabel As Label = New Label 'LinkButton

With wLabel
.Text = "タイトル"
End With

wTableCell.Controls.Add(wLabel)
wTableRow.Controls.Add(wTableCell)
wTable.Controls.Add(wTableRow)

Return wTable

End Function

なにかいい方法を知っている方はアドバイス下さい。

宜しくお願いします。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-06-09 21:44
Javaスレに、JavaScriptっていうタイトルのJavaとは関係ない話題のスレッド
があります。

参考になるでしょう。が、<asp:GridView> に適用させるのであれば、それなり
にコツが要ります。

ヘッダをN行間隔で表示する、のではなくて、ヘッダを固定する。
ですけど。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-06-09 22:35
引用:
例えば、GridView の RowCreated イベントで、コントロールを
Add する方法で出来ると思ったのですがどうもうまくいきません。

RowDataBoundイベントだとどうですか?ただ、セルにテーブルをAddしてもタイトルのようにはならないですが。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-06-10 00:31
引用:

レイさんの書き込み (2008-06-09 20:13) より:

例えば、GridView の RowCreated イベントで、コントロールを
Add する方法で出来ると思ったのですがどうもうまくいきません。



例えばこんなんでどうでしょ?
コード:
    Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GridView1.RowCreated
        If (e.Row.RowType = DataControlRowType.DataRow _
            AndAlso e.Row.RowIndex Mod 10 = 0) Then

            Dim headerCell1 As New TableCell()
            headerCell1.Text = "column1"

            Dim headerCell2 As New TableCell()
            headerCell2.Text = "column2"

            Dim headerCell3 As New TableCell()
            headerCell3.Text = "column3"

            Dim headerRow As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal)
            headerRow.Cells.AddRange(New TableCell() {headerCell1, headerCell2, headerCell3})

            GridView1.Controls(0).Controls.Add(headerRow)
        End If

    End Sub



ちなみに↓を参考にしました…というかほぼパクリかも。
http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=312902&SiteID=7
レイ
会議室デビュー日: 2008/06/09
投稿数: 3
投稿日時: 2008-06-10 09:39
皆さん、ありがとうございました。
おかげでなんとか出来そうです。
1

スキルアップ/キャリアアップ(JOB@IT)