Dim Table As New Data.DataTable
Dim C1 As New Data.DataColumn("C1", GetType(String))
Dim C2 As New Data.DataColumn("C2", GetType(String))
Dim C3 As New Data.DataColumn("C3", GetType(String))
Table.Columns.Add(C1)
Table.Columns.Add(C2)
Table.Columns.Add(C3)
For i As Integer = 0 To 10
Dim r As Data.DataRow = Table.NewRow
r(
"C1") = "A"
If i Mod 2 Then
r(
"C2") = "A.1"
Else
r(
"C2") = "A.2"
End If
If i Mod 3 Then
r(
"C3") = "A.3"
Else
r(
"C3") = "A.4"
End If
Table.Rows.Add(r)
Next
For i As Integer = 0 To 10
Dim r As Data.DataRow = Table.NewRow
r(
"C1") = "B"
If i Mod 2 Then
r(
"C2") = "B.1"
Else
r(
"C2") = "B.2"
End If
If i Mod 3 Then
r(
"C3") = "B.3"
Else
r(
"C3") = "B.4"
End If
Table.Rows.Add(r)
Next
GridView1.DataSource = Table
GridView1.DataBind()
Dim a, b, c As TreeNode
Dim strA, strB, strC As String
strA =
""
strB =
""
strC =
""
Dim dr() As Data.DataRow = Table.Select("", "C1,C2,C3")
For i As Integer = 0 To dr.Length - 1
If strA <> dr(i)("C1") Then
strA = dr(i)(
"C1")
a =
New TreeNode(strA)
TreeView1.Nodes.Add(a)
End If
If strB <> dr(i)("C2") Then
strB = dr(i)(
"C2")
b =
New TreeNode(strB)
a.ChildNodes.Add(b)
End If
If strC <> dr(i)("C3") Then
strC = dr(i)(
"C3")
c =
New TreeNode(strC)
b.ChildNodes.Add(c)
End If
Next
این قراره جدولی مثل زیر رو به treeview تبدیل کنه .
| C1 |
C2 |
C3 |
| A |
A.2 |
A.4 |
| A |
A.1 |
A.3 |
| A |
A.2 |
A.3 |
| A |
A.1 |
A.4 |
| A |
A.2 |
A.3 |
| A |
A.1 |
A.3 |
| A |
A.2 |
A.4 |
| A |
A.1 |
A.3 |
| A |
A.2 |
A.3 |
| A |
A.1 |
A.4 |
| A |
A.2 |
A.3 |
| B |
B.2 |
B.4 |
| B |
B.1 |
B.3 |
| B |
B.2 |
B.3 |
| B |
B.1 |
B.4 |
| B |
B.2 |
B.3 |
| B |
B.1 |
B.3 |
| B |
B.2 |
B.4 |
| B |
B.1 |
B.3 |
| B |
B.2 |
B.3 |
| B |
B.1 |
B.4 |
| B |
B.2 |
B.3 |
این جدول در برنامه اصلی از 3 تا جدول میاد که آخر سرش برای اینکه همه چیز پشت سر هم باشد GroupBy C1,C2,C3 و Order by شده است . الان با یک حلقه نمایش می ده ولی نمی دونم چقدر روش خوبی است ! در دات نت 2 برای treeview.datasource یه چیزهایی است که باید تست کرد . یک راه هم استفاده از 3 تا حلقه و چند صد بار گرفتن اطلاعات از database است !