- PR -

【ASP.NET】動的に作成したテンプレート列に値をセットする方法

1
投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-06-01 15:01
いつもお世話になります。

先日、

  勘定系・業務系アプリの画面構成・推移について

を読んでいて、じゃんぬさんが「メンテナンス画面は1画面だけ用意し、動的に切り替える」と言われており、なるほど! と思いました。
私もこのような場合、複数画面を用意してしまうと思います(^_^;)

とりあえず、ページ上にグリッド(DataGrid)だけ用意しておき、
あとはコード上(aspx.vb)でテンプレート列を作成していく方法は分かったのですが、
その作成したテンプレート列にテーブルの値をセットする方法が分からなくて悩んでおります。
何かしらのヒントをいただけたらと思い、投稿致しました。

コード:
Public Class DataGridTemplate
    Implements ITemplate

    Dim templateType As ListItemType
    Dim columnName As String

    Sub New(ByVal type As ListItemType, ByVal ColName As String)
        templateType = type
        columnName = ColName
    End Sub

    Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
        Dim lc As New Literal

        Select Case templateType
            Case ListItemType.Header            ' ヘッダ
                lc.Text = "<B>" & columnName & "</B>"
                container.Controls.Add(lc)
            Case ListItemType.Item              ' アイテム表示
                lc.Text = columnName
                container.Controls.Add(lc)
            Case ListItemType.EditItem          ' 編集
                Dim tb As New TextBox
                tb.Text = columnName
                container.Controls.Add(tb)
            Case ListItemType.Footer            ' フッタ
                Dim tb As New TextBox
                tb.Text = ""
                container.Controls.Add(tb)
        End Select
    End Sub


というクラスを作り、
コード:
        For iCnt01 As Integer = 0 To oDataSet.Tables(0).Columns.Count - 1
            Dim oTemplateColumn As New TemplateColumn

            oTemplateColumn.HeaderTemplate = New DataGridTemplate(ListItemType.Header, oDataSet.Tables(0).Columns(iCnt01).ColumnName)
            oTemplateColumn.ItemTemplate = New DataGridTemplate(ListItemType.Item, "Column")
            oTemplateColumn.EditItemTemplate = New DataGridTemplate(ListItemType.EditItem, "Column1")
            oTemplateColumn.FooterTemplate = New DataGridTemplate(ListItemType.Footer, "")
            grdMeisai.Columns.Add(oTemplateColumn)
        Next


こんな感じで使い、テンプレート列を作成するまでは出来ました。
あとは、ItemTemplate に DataSet のデータをどこでどのように設定すべきか、なんですが。

  Web サーバー コントロール テンプレートをプログラムで作成する

にあるイベント追加でいけるのでしょうか?
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-06-01 17:22
http://www4.atwiki.jp/nishi/pages/54.html

このページを参考にして、何とか出来そうです。
もうちょっと頑張ってみます。
1

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