- PR -

Gridviewに表示されるカンマ区切りのデータをGridviewなどを使って整形して表示したい

1
投稿者投稿内容
ガロア
会議室デビュー日: 2004/11/30
投稿数: 8
投稿日時: 2007-04-16 22:48
お世話になります。

件名のとおり、Gridviewに表示されるカンマ区切りのデータを以下のように
整形して表示したいと考えております。

@整形前
コード:
---------------------------------------------------
|  A  |   B   |      C      |
---------------------------------------------------
|   001   |   00101   |  りんご,いちご,バナナ  |
---------------------------------------------------
|   002   |    00201    |  メロン,バナナ,ぶどう   |
---------------------------------------------------



A整形後
コード:
---------------------------------------------------
|  A  |   B   |      C      |
---------------------------------------------------
|   001   |   00101   |  りんご                |
|         |           |  いちご                |
|         |           |  バナナ                 |
---------------------------------------------------
|   002   |    00201    |  メロン                 |
|         |             |  バナナ                 |
|         |             |  ぶどう                 |
---------------------------------------------------



考え方としてはGridviewを入れ子にするようなイメージで考えてみました。
(Repeaterコントロールでもよいかと)

1.@のC列のセルの値を取得
2.C列の値を配列に保存
3.DataTableを生成(dt)し、その新規行(NewRow)に配列の値を入れる
4.Datatableに行(NewRow)を追加
5.Gridview2のDataSourceにdtをセット
6.Gridview2.DataBind()

コード:
    Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound
        Dim gv As New GridView
        gv = CType(sender, GridView)

        For i As Integer = 0 To gv.Rows.Count - 1
            Dim dt As New DataTable
            dt.Columns.Add()

            Dim seq() As String = gv.Rows(i).Cells(2).Text.Split(",")

            For j As Integer = 0 To seq.Length - 1
                Dim NewRow As Data.DataRow = dt.NewRow
                NewRow(0) = seq(j)
                dt.Rows.Add(NewRow)
            Next

            With CType(gv.Rows(i).Cells(2).FindControl("GridView2"), GridView)
                .DataSource = dt
                .DataBind()
            End With
        Next
    End Sub



DataTableの値は入っているみたいなのですが、表示されません。
足りない箇所、間違えている箇所等ありましたらご指摘いただけないでしょうか?
よろしくお願いします。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-04-17 06:11
GridViewの「C」列をテンプレート列にして
ItemTemplateから独自のメソッドを呼び出したらどうでしょうか。

<%# FormatField(Eval("fieldC") %>

GridViewの列をフォーマットして表示する
http://www.ajax-asp.dev-asp.net/Goto.aspx?id=070417VB-1

_________________
ASP.NET+Ajaxサンプル集


[ メッセージ編集済み 編集者: Access 編集日時 2007-04-17 06:40 ]
ガロア
会議室デビュー日: 2004/11/30
投稿数: 8
投稿日時: 2007-04-17 11:37
Access様

お世話になります。
ご提案いただいた方法で解決できました!
ありがとうございました。

私のやり方のまずかった点に関してはまだ解決できておりませんが、この点に関してはもう少し自分で探してみます。

早朝にも関わらずご返答いただきありがとうございましたm(_ _)m
1

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