rezaei manesh
یک شنبه 10 تیر 1386, 18:37 عصر
سلام
من یک جدول دارم که نام قسمت ها در اون ثبت شده است به این صورت که هر رکورد یک نام و یک آی دی و یک پرنت آی دی داره(parentid در اصل ID رکورد ریشه اون هست )
نتیجه جدول به شکل درخت هست
حال من می خوام که این جدول رو در یک فرم خاص به صورت درختی نشون ندم
می خوام اونا رو زیر هم لیست کنم (در یک checklistbox) اما رکورد های هر شاخه زیر ریشه با یک space باشند
مثل
مدیریت
اداری
دبیرخانه
گردشی
نگهبانی
...
چه طور باید این کار رو بکنم
این کد رو نوشتم اما درست کار نمی کنه حق هم داره
Public Sub FillSections()
Dim tbl As New DataTable
With My.Forms.FrmSelectPersons.ChkLst1
For i As Int16 = 1 To tbl.Rows.Count - 1
FindChield(tbl, tbl.Rows(i - 1).Item("IdValue"))
Next
End With
End Sub
Private Sub FindChield(ByRef tbl As DataTable, ByVal intIdValue As Int32, Optional ByVal strSpace As String = "") ' As String
tbl.DefaultView.RowFilter = "IdParent = " & intIdValue
If tbl.DefaultView.Count = 0 Then
Return
Else
strSpace += " "
intIdValue = tbl.DefaultView(0)("IdValue")
strquery = strSpace & tbl.DefaultView(0)("NAMEValue").ToString & "{کد : " & tbl.DefaultView(0)("IdValue").ToString & "}"
My.Forms.FrmSelectPersons.ChkLst1.Items.Add(strque ry)
tbl.DefaultView(0).Delete()
FindChield(tbl, intIdValue, strSpace)
tbl.DefaultView.RowFilter = "IdParent = " & intIdValue
End If
End Sub
من یک جدول دارم که نام قسمت ها در اون ثبت شده است به این صورت که هر رکورد یک نام و یک آی دی و یک پرنت آی دی داره(parentid در اصل ID رکورد ریشه اون هست )
نتیجه جدول به شکل درخت هست
حال من می خوام که این جدول رو در یک فرم خاص به صورت درختی نشون ندم
می خوام اونا رو زیر هم لیست کنم (در یک checklistbox) اما رکورد های هر شاخه زیر ریشه با یک space باشند
مثل
مدیریت
اداری
دبیرخانه
گردشی
نگهبانی
...
چه طور باید این کار رو بکنم
این کد رو نوشتم اما درست کار نمی کنه حق هم داره
Public Sub FillSections()
Dim tbl As New DataTable
With My.Forms.FrmSelectPersons.ChkLst1
For i As Int16 = 1 To tbl.Rows.Count - 1
FindChield(tbl, tbl.Rows(i - 1).Item("IdValue"))
Next
End With
End Sub
Private Sub FindChield(ByRef tbl As DataTable, ByVal intIdValue As Int32, Optional ByVal strSpace As String = "") ' As String
tbl.DefaultView.RowFilter = "IdParent = " & intIdValue
If tbl.DefaultView.Count = 0 Then
Return
Else
strSpace += " "
intIdValue = tbl.DefaultView(0)("IdValue")
strquery = strSpace & tbl.DefaultView(0)("NAMEValue").ToString & "{کد : " & tbl.DefaultView(0)("IdValue").ToString & "}"
My.Forms.FrmSelectPersons.ChkLst1.Items.Add(strque ry)
tbl.DefaultView(0).Delete()
FindChield(tbl, intIdValue, strSpace)
tbl.DefaultView.RowFilter = "IdParent = " & intIdValue
End If
End Sub