質問編集履歴
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
|