PDA

View Full Version : پر کردن اطلاعات از بانک به treeview



rezaei manesh
سه شنبه 18 مهر 1385, 13:01 عصر
سلام
من یک فرم دارم که باید قسمت ها به صورت درخت واره پر بشند
یک فیلد هم برای مشخص کردن مکان هر ایتم در نظر گرفتم که به این شکل پر می شه
01
0102
0103
010301
و....
حالا من چطور باید اینا رو تویه treeview بریزم؟
اگوریتمش خیلی سخته؟
آیا روشش درسته ؟
یکم توضیح بدین.

rezaei manesh
سه شنبه 18 مهر 1385, 16:33 عصر
در ضمن این کد هم خطا می ده (با Like مشکل داره)


dv.RowFilter = " CodeNode like " & Mid(dv(i)("CodeNode"), 1, 2)

چکار کنم ؟؟؟؟؟؟؟

Maryam_y_m
سه شنبه 18 مهر 1385, 18:41 عصر
در مورد treeview نه اتفاقا مشکل نیست. لازم هم نیست که برای موقعیت هر آیتم یک فیلد در نظر بگیری که به این صورن پر بشه. کافیه یک فیلد parent بگیری که والد هر رکورد رو برات مشخص کنه. بعد که والد اصلی (root) رو تشخیص بدی و اول اونرو به درخت add کنی و بعد همه آیتمهایی که child آن هستند را به این root اضافه میکنی و به همین ترتیب. البته شاید لازم باشه که از recursive استفاده کنی. اگه کد نمونه خواستی بگو تا بزارم.

در مورد دوم هم like فقط برای string کار میکنه و درضمن مقدار جلوی اون هم باید به این صورت باشه :


like 'sample'

rezaei manesh
چهارشنبه 19 مهر 1385, 11:45 صبح
من با EsxtraTreeList کار می کنم
می شه یکم راجع به recursive بیشتر توضیح می دیدن
اگه نمونه کد هم دارین بدین ممنون می شم

el_abdollahi
شنبه 22 مهر 1385, 11:27 صبح
من یک برنامه که کار مورد نظر شما رو انجام میده براتون می فرستم. البه بانک اطلاعاتیش sql server است . اگر مشکلی وجود داشت لطفا بگین.

rezaei manesh
شنبه 22 مهر 1385, 16:20 عصر
سلام
من با extratreelist کار می کنم که تا همین جایی که برنامه شما عمل می کنه مال من هم عمل می کنه یعنی چیلد منو رو سر جای خود نمی زاره
البته من به پیشنهاد مریم خانم از idپرنت استفاده کردم اما نمی دونم کدوم id رو باید ذخیره کنم

rezaei manesh
شنبه 22 مهر 1385, 16:54 عصر
الان نمی دونم مثلا رو گره 3-1-0 یک نود جدید اضافه کنم حالا کدوم id رو برای idparent نود جدید ذخیره کنم ؟ تویه کدوم رویداد؟ من از این رویداد استفاده کردم نشد


Private Sub TreeList1_BeforeFocusNode(sender, e) Handles TreeList1.BeforeFocusNode
If Not e.Node Is Nothing Then
IntIdParent = e.Node.Id
Exit Sub
End If
End Sub

اینطوری هر بار یه جا می زاره!

rezaei manesh
سه شنبه 25 مهر 1385, 09:12 صبح
این هم یه نمونه کد که درست اضافه نمی کنه تو رو خدا یکی یه کمکی بکنه
یعنی هیشکی با tree ار نکرده
اوایی هم که کردن با idparent کار نکردن؟!!!!!!

Maryam_y_m
سه شنبه 25 مهر 1385, 16:51 عصر
با این فرض که یک table داریم به نام tbl_group که parentid ستون والدها میباشد ، تابع FillTreeNodes را هرجا صدا کنیم (مثلا Form_load) درختی متناظر با اطلاعات جدول ساخته میشود



Private Sub FillTreeNodes()
Dim SQL As String
Dim dr As DataRow
DsBase.Tbl_Group.Rows.Clear()
SQL = " Select * From Tbl_Group ORDER BY ParentId, GroupId"
ADO_TblGroup.SelectCommand.CommandText = SQL
CmpBase.ADO_TblGroup.Fill(DsBase, "Tbl_Group")
ADO_TblGroup.SelectCommand.CommandText = "Select * From Tbl_Group"
TreeView1.Nodes.Clear()
For Each dr In DsBase.Tbl_Group.Rows
Add_to_TreeView(dr("ParentId"), dr("GroupId"), dr("GroupName"), TreeView1.Nodes)
Next
End Sub


Private Function Add_to_TreeView(ByVal ParentId As Integer, _
ByVal GroupId As Integer, _
ByVal NodeText As String, _
ByVal wrkTV As TreeNodeCollection) As Boolean
Dim tvNode As New TreeNode
If ParentId = 0 Then
'
' top node, added directly
'
tvNode.Tag = GroupId
tvNode.Text = NodeText
wrkTV.Add(tvNode)
Return True
Else
'
' Children nodes
'
For Each tvNode In wrkTV

If tvNode.Tag = ParentId Then
Dim tvSubNode As New TreeNode
tvSubNode.Tag = GroupId
tvSubNode.Text = NodeText
tvNode.Nodes.Add(tvSubNode)
Return True
End If
Next
For Each tvNode In wrkTV
If Add_to_TreeView(ParentId, GroupId, NodeText, tvNode.Nodes) = True Then
Return True
End If
Next
End If
Return False
End Function


دقت کنید که نودهای ریشه (root) باید parentid شان صفر باشد
اگر مشکلی بود در خدمت هستم :لبخند:

rezaei manesh
سه شنبه 25 مهر 1385, 17:19 عصر
سلام
من تا این مرحله ای که شما گفتید رو خودم درست کردم
البته نه به این صورت دستی من tree رو به بانک وصل کردم خودش می سازه
اما حالا من می خوام بعد از نمایش یک نود جدید به بانک اضافه کنم همزمان توی tree هم نمایش داده بشه
مشکل من اینه که نمی تونم idparent نود جدید رو پیدا کنم ؟
من ویرایش و حذف رو درست کردم اما سر اضافش گیرم؟؟
مشکلم با کمی تلاش حل شد.

hassansamadbin
چهارشنبه 18 فروردین 1389, 11:35 صبح
با سلام به همه دوستان
من میخوام به treeview بصورت اتوماتیک node اضافه کنم
ممنون از کمکتون