質問編集履歴
1
実装の追記
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -38,8 +38,7 @@ 
     | 
|
| 
       38 
38 
     | 
    
         
             
            |:|:|
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            ###試したこと
         
     | 
| 
       41 
     | 
    
         
            -
            これを実現するために以下のようなイメージで動的に画面を作ることを考えています 
     | 
| 
      
 41 
     | 
    
         
            +
            これを実現するために以下のようなイメージで動的に画面を作ることを考えています。
         
     | 
| 
       42 
     | 
    
         
            -
            より良い方法がございましたらご教授いただければ幸いです。
         
     | 
| 
       43 
42 
     | 
    
         | 
| 
       44 
43 
     | 
    
         
             
            ```vbnet
         
     | 
| 
       45 
44 
     | 
    
         
             
            <ajaxToolkit:Accordion>
         
     | 
| 
         @@ -75,8 +74,69 @@ 
     | 
|
| 
       75 
74 
     | 
    
         
             
            </ajaxToolkit:Accordion>
         
     | 
| 
       76 
75 
     | 
    
         
             
            ```
         
     | 
| 
       77 
76 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 77 
     | 
    
         
            +
            これを実現するために以下のようなプログラムを書きました。
         
     | 
| 
       79 
78 
     | 
    
         | 
| 
      
 79 
     | 
    
         
            +
            ```vbnet
         
     | 
| 
      
 80 
     | 
    
         
            +
                Private Sub SetContents(ByVal control As ControlCollection, ByVal header As DataRow, ByVal content As DataTable)
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                    Dim accordion As AjaxControlToolkit.Accordion
         
     | 
| 
      
 83 
     | 
    
         
            +
                    Dim accordionPane As AjaxControlToolkit.AccordionPane
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                    Dim table As Table
         
     | 
| 
      
 86 
     | 
    
         
            +
                    Dim tableRow As TableRow
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                    Try
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                        ' Accordion Header
         
     | 
| 
      
 91 
     | 
    
         
            +
                        table = New Table
         
     | 
| 
      
 92 
     | 
    
         
            +
                        tableRow = CreateRow(header)			' TableRowを生成する関数(省略)
         
     | 
| 
      
 93 
     | 
    
         
            +
                        table.Controls.Add(tableRow)
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                        contentRows = content.Select(pattern)	' patternは抽出条件(省略)
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                        If (contentRows.Length = 0) Then
         
     | 
| 
      
 98 
     | 
    
         
            +
                            ' コンテンツなし
         
     | 
| 
      
 99 
     | 
    
         
            +
                            control.Add(table)
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                        Else
         
     | 
| 
      
 102 
     | 
    
         
            +
                            ' コンテンツあり
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                            accordion = New AjaxControlToolkit.Accordion
         
     | 
| 
      
 105 
     | 
    
         
            +
                            accordion.ID = "accordion_" + header("xxx")
         
     | 
| 
      
 106 
     | 
    
         
            +
                            accordion.ContentCssClass = "accordionContent"
         
     | 
| 
      
 107 
     | 
    
         
            +
                            accordion.HeaderCssClass = "accordionHeader"
         
     | 
| 
      
 108 
     | 
    
         
            +
                            accordion.RequireOpenedPane = False
         
     | 
| 
      
 109 
     | 
    
         
            +
                            accordionPane = New AjaxControlToolkit.AccordionPane
         
     | 
| 
      
 110 
     | 
    
         
            +
                            accordionPane.ID = "accordionPane_" + header("xxx")
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                            ' ヘッダー追加
         
     | 
| 
      
 113 
     | 
    
         
            +
                            accordionPane.HeaderContainer.Controls.Add(table)
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                            ' コンテンツの追加は、再帰呼出しによって行う
         
     | 
| 
      
 116 
     | 
    
         
            +
                            For Each row As DataRow In contentRows
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
                                SetContents(accordionPane.ContentContainer.Controls, row, content)
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                            Next
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                            ' ペインの追加
         
     | 
| 
      
 123 
     | 
    
         
            +
                            accordion.Panes.Add(accordionPane)
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                            ' 作成したアコーディオンを追加する
         
     | 
| 
      
 126 
     | 
    
         
            +
                            control.Add(accordion)
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                        End If
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                    Catch ex As Exception
         
     | 
| 
      
 131 
     | 
    
         
            +
                        Throw
         
     | 
| 
      
 132 
     | 
    
         
            +
                    End Try
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                End Sub
         
     | 
| 
      
 135 
     | 
    
         
            +
            ```
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            より良い方法がございましたらご教授いただければ幸いです。
         
     | 
| 
      
 138 
     | 
    
         
            +
            よろしくお願いいたします。
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
       80 
140 
     | 
    
         
             
            ###補足情報(言語/FW/ツール等のバージョンなど)
         
     | 
| 
       81 
141 
     | 
    
         
             
            Visual Studio 2015
         
     | 
| 
       82 
142 
     | 
    
         
             
            .NET Framework 4.6.2
         
     |