الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية ملئ Treeview من قاعدة البيانات

بدأه I_s في 25 فبراير 2008 · 2 رد · 1,089 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخوتي الكرام

ارجو المساعدة في انشاء شجرة ذات 3 مستويات

يتم ملأها من قاعدة البيانات

لقد نجحت في كتابة كود يضيف مستويين ولكن لا اعرف كيفية اضافة المستوى الثالث

وها هو الكود الذي استخدمته

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


		Dim i As Integer = 0
		Dim con As New OleDb.OleDbConnection()
		Dim rdName As OleDb.OleDbDataReader
		Dim rdName2 As OleDb.OleDbDataReader
		Dim rdName3 As OleDb.OleDbDataReader

		con.ConnectionString = "provider = microsoft.jet.oledb.4.0; data source=" & System.AppDomain.CurrentDomain.BaseDirectory() & "data.mdb"
		Try
			TreeView1.Nodes.Clear()
			con.Open()
			Dim cmd As New OleDb.OleDbCommand("select * from nodes", con)
			Dim cmd2 As New OleDb.OleDbCommand
			Dim cmd3 As New OleDb.OleDbCommand
			cmd2.Connection = con
			cmd3.Connection = con
			rdName = cmd.ExecuteReader()

			Do While rdName.Read()
				Dim mynode As New TreeNode(rdName.Item(1))
				TreeView1.Nodes.Add(mynode)
				cmd2.CommandText = "select * from childs where node_id =" & rdName.GetValue(0)
				rdName2 = cmd2.ExecuteReader()
				Do While rdName2.Read()
					Dim mychild As New TreeNode(rdName2.Item(2))
					TreeView1.Nodes(i).ChildNodes.Add(mychild)
					  Loop
				i = i + 1
				rdName2.Close()
			Loop
			rdName.Close()
		Catch e1 As OleDb.OleDbException
			'  Label1.Text = e1.Message
		End Try

		TreeView1.CollapseAll()

	End Sub

أرجو مساعدتي في كيفية اضافة مستوى ثالث هل استخدم نفس الجملة

TreeView1.Nodes(i).ChildNodes.Add(mychild)

ام ماذا افعل

رجاءا المساعدة

تم تعديل هذه المشاركة بواسطة I_s في 25 فبراير 2008 في 21:38

#2

طريقة لل Multi Levels

قم بإنشاء جدول واحد فقط يحتوي على الحقول التالية

Lookup_ID	int	
Lookup_Name	varchar(50)	
Lookup_Type_ID	int
Status	bit
Is_Static	bit

طبعا يمكنك الاستغناء عن Status و Is_Static حسب الحالة عندك

بعدها قم بإنشاء صفحة ASP.net تحتوي على Treeview

في كود الصفحة اكتب هذا الكود

	Private Sub PopulateRootLevel()
		Try
			Dim objCommand As New SqlCommand("select Lookup_ID,Lookup_Name,Lookup_Type_ID,Status,Is_Static,(select count(*) FROM GLB_Lookups " _
			& "WHERE Lookup_Type_ID=sc.Lookup_ID) childnodecount FROM GLB_Lookups sc where Lookup_Type_ID IS NULL", oCommon.connection)

			Dim da As New SqlDataAdapter(objCommand)
			Dim dt As New DataTable()
			da.Fill(dt)
			Dim i As Integer
			For i = 0 To dt.Rows.Count - 1
				Dim newNode As TreeNode = New TreeNode(dt.Rows(i).Item("Lookup_Name").ToString(), dt.Rows(i).Item("Lookup_ID").ToString())

				'newNode.SelectAction = TreeNodeSelectAction.Expand
				TreeView1.Nodes.Add(newNode)
				PopulateSubLevel(newNode)
				'newNode.PopulateOnDemand = True
			Next

			'PopulateNodes(dt, TreeView1.Nodes)
		Catch ex As Exception
			lblStatus.Text = ex.Message
		End Try

	End Sub
	Private Sub PopulateSubLevel(ByVal parentNode As TreeNode)

		Try
			Dim objCommand As New SqlCommand("select Lookup_ID,Lookup_Name,Lookup_Type_ID,Status,Is_Static,(select count(*) FROM GLB_Lookups " _
			& "WHERE Lookup_Type_ID=sc.Lookup_ID) childnodecount FROM GLB_Lookups sc where Lookup_Type_ID=@Lookup_Type_ID", oCommon.connection)
			objCommand.Parameters.Add("@Lookup_Type_ID", SqlDbType.Int).Value = parentNode.Value

			Dim da As New SqlDataAdapter(objCommand)
			Dim dt As New DataTable()
			da.Fill(dt)
			Dim i As Integer
			For i = 0 To dt.Rows.Count - 1
				Dim newNode As TreeNode = New TreeNode(dt.Rows(i).Item("Lookup_Name").ToString(), dt.Rows(i).Item("Lookup_ID").ToString())
				parentNode.ChildNodes.Add(newNode)
				PopulateSubLevel(newNode)
			Next

			'PopulateNodes(dt, parentNode.ChildNodes)

		Catch ex As Exception
			lblStatus.Text = ex.Message
		End Try

	End Sub
	Private Sub PopulateNodes(ByVal dt As DataTable, ByVal nodes As TreeNodeCollection)
		Try
			For Each dr As DataRow In dt.Rows
				Dim tn As New TreeNode()
				tn.Text = dr("Lookup_Name").ToString()
				tn.Value = dr("Lookup_ID").ToString()
				nodes.Add(tn)

				'If node has child nodes, then enable on-demand populating
				treeView1.SelectedNode.PopulateOnDemand = (CInt(dr("childnodecount")) > 0)
			Next
		Catch ex As Exception
			lblStatus.Text = ex.Message
		End Try

	End Sub

قم باستدعاء PopulateRootLevel() في حدث Page_Load

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#3

مشكور أخى ماجد123

لكن لى ملاحظة

أولا يجب إما أضافة المثال البسيط ونحن ننشى الجدول على الSql server2000

كتابة جميع المتغيرات وشووو تصنيفها يعنى وخصوصا الconnection

حضراتكم تعرفوون المبتدى لو متغير غير متوفر توقف المثال

ارجوو النظر بالمثال و أرفاقة اوكى

تنويه الإدارة : هذه عضوية  سامي أبو عليوة رحمه الله   


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Php,Asp ,Asp.Net, Projects,Disktop Delphi7,Mssql Server 2008&2005,Access 2007 , Sms Mobile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

مواضيع مشابهة