PDA

View Full Version : سوال در مورد Tree View



m_mody1675
شنبه 06 آبان 1385, 13:15 عصر
چطوری میشه یه tree View رو از دیتا بیس پر کرد ؟ (تا 4 سطح)

vb341
شنبه 06 آبان 1385, 18:09 عصر
دوست عزیز منهم این مشکل رو دارم و در بخش vb6 مطرح کردم ولی هنوز جوابی دریافت نکردم.

rezaei manesh
یک شنبه 07 آبان 1385, 08:04 صبح
سلام
من یه سوال شبیه این رو با extralist view مطرح کردم اما جواب ها بیشتر به درد tree view می خورد این لینکش برو ببین فکر کنم مشکلت رو حل کنه
http://barnamenevis.org/forum/showthread.php?p=275377#post275377

m_mody1675
یک شنبه 07 آبان 1385, 14:18 عصر
من با vb6 میتونم - نگاه میکنم اگه تیکه برنامه داشتم براتون میزارم- با vb.net مشکل دارم

م_پورنگ
چهارشنبه 10 آبان 1385, 10:32 صبح
با سلام
این کد برای پر کردن tree برای 5 سطح می باشد.
نکته موجود در ایجاد key است که از @ استفاده شده برای اینکه در خوندن بتونیم با استفاده
از تابع
Dim array_key() = Split(key, "@")
کلید نود مورد نظر را پیدا کنیم



Private Sub fill_tree_access()

Dim dvTblview0 As DataView

dvTblview0 = New DataView(Inventory_ManagerDataSet.Tables("TblInv_AccessProject"), "father_id is null", "", DataViewRowState.CurrentRows)
Dim newTable0 As DataTable = dvTblview0.ToTable()

Dim i As Integer
For i = 0 To newTable0.Rows.Count - 1
Dim key0 As String
key0 = newTable0.Rows(i).Item("id")
TreeView1.Nodes.Add(key0, newTable0.Rows(i).Item("Description").ToString)


Dim dvTblview1 As DataView
dvTblview1 = New DataView(Inventory_ManagerDataSet.Tables("TblInv_AccessProject"), "father_id =" & key0, "", DataViewRowState.CurrentRows)
Dim newTable1 As DataTable = dvTblview1.ToTable()

Dim j As Integer
For j = 0 To newTable1.Rows.Count - 1
Dim key1 As String
key1 = newTable1.Rows(j).Item("id")
TreeView1.Nodes(key0).Nodes.Add(key0 & "@" & key1, newTable1.Rows(j).Item("Description").ToString)



Dim dvTblview2 As DataView
dvTblview2 = New DataView(Inventory_ManagerDataSet.Tables("TblInv_AccessProject"), "father_id =" & key1, "", DataViewRowState.CurrentRows)
Dim newTable2 As DataTable = dvTblview2.ToTable()

Dim k As Integer
For k = 0 To newTable2.Rows.Count - 1
Dim key2 As String
key2 = newTable2.Rows(k).Item("id")
TreeView1.Nodes(key0).Nodes(key0 & "@" & key1).Nodes.Add(key0 & "@" & key1 & "@" & key2, newTable2.Rows(k).Item("Description").ToString)

Dim dvTblview3 As DataView
dvTblview3 = New DataView(Inventory_ManagerDataSet.Tables("TblInv_AccessProject"), "father_id =" & key2, "", DataViewRowState.CurrentRows)
Dim newTable3 As DataTable = dvTblview3.ToTable()

Dim h As Integer
For h = 0 To newTable3.Rows.Count - 1
Dim key3 As String
key3 = newTable3.Rows(h).Item("id")
TreeView1.Nodes(key0).Nodes(key0 & "@" & key1).Nodes(key0 & "@" & key1 & "@" & key2).Nodes.Add(key0 & "@" & key1 & "@" & key2 & "@" & key3, newTable3.Rows(h).Item("Description").ToString)

Dim dvTblview4 As DataView
dvTblview4 = New DataView(Inventory_ManagerDataSet.Tables("TblInv_AccessProject"), "father_id =" & key3, "", DataViewRowState.CurrentRows)
Dim newTable4 As DataTable = dvTblview4.ToTable()

Dim z As Integer
For z = 0 To newTable4.Rows.Count - 1
Dim key4 As String
key4 = newTable4.Rows(z).Item("id")
TreeView1.Nodes(key0).Nodes(key0 & "@" & key1).Nodes(key0 & "@" & key1 & "@" & key2).Nodes(key0 & "@" & key1 & "@" & key2 & "@" & key3).Nodes.Add(key0 & "@" & key1 & "@" & key2 & "@" & key3 & "@" & key4, newTable4.Rows(z).Item("Description").ToString)


Dim dvTblview5 As DataView
dvTblview5 = New DataView(Inventory_ManagerDataSet.Tables("TblInv_AccessProject"), "father_id =" & key4, "", DataViewRowState.CurrentRows)
Dim newTable5 As DataTable = dvTblview5.ToTable()

Dim x As Integer
For x = 0 To newTable5.Rows.Count - 1
Dim key5 As String
key5 = newTable5.Rows(x).Item("id")
TreeView1.Nodes(key0).Nodes(key0 & "@" & key1).Nodes(key0 & "@" & key1 & "@" & key2).Nodes(key0 & "@" & key1 & "@" & key2 & "@" & key3).Nodes(key0 & "@" & key1 & "@" & key2 & "@" & key3 & "@" & key4).Nodes.Add(key0 & "@" & key1 & "@" & key2 & "@" & key3 & "@" & key4 & "@" & key5, newTable5.Rows(x).Item("Description").ToString)


Next
Next
Next

Next

Next
Next

End Sub

nina78
پنج شنبه 11 آبان 1385, 15:35 عصر
سلام این کد برای تمام سطح های دیتا بیس با c# اول یک کنترل tree view اضافه نمائید
#region binding


private void CreateRootLevel()
{
SqlDataAdapter da = new SqlDataAdapter("select node_id ,nodetitle,formname ,(select count(*) from tbl_x where parentid=tbl.node_id)childCount from tbl_x tbl ", conn);
DataTable dt = new DataTable();
da.Fill(dt);
CreateNodes(dt, Mytree.Nodes);

}
private void CreateNodes(DataTable yourdt, TreeNodeCollection yournode)
{
foreach (DataRow dr in yourdt.Rows)
{

TreeNode newNode = new TreeNode();

newNode.Text = dr["nodetitle"].ToString();
newNode.Value = dr["node_id"].ToString();

if (newNode.NavigateUrl == "")
{
newNode.SelectAction = TreeNodeSelectAction.None;
}
newNode.NavigateUrl = dr["formname"].ToString();
newNode.SelectAction = TreeNodeSelectAction.Expand;

yournode.Add(newNode);


newNode.PopulateOnDemand = ((int)dr["childCount"] > 0);

}
}
private void CreateSubLevel(int parentId, TreeNode parentNode)
{
SqlDataAdapter da = new SqlDataAdapter("select node_id ,nodetitle,formname ,(select count(*) from tbl_x where parentid=tbl.node_id)childCount from tbl_x tbl where parentid =" + parentId, conn);
DataTable dt = new DataTable();
da.Fill(dt);
CreateNodes(dt, parentNode.ChildNodes);
}
protected void Mytree_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
CreateSubLevel(Convert.ToInt32(e.Node.Value), e.Node);
}
#endregion

bachebahal_1363
دوشنبه 11 آذر 1387, 15:41 عصر
فرمت مناسب کد:


privatevoid CreateRootLevel()
{
SqlDataAdapter da = newSqlDataAdapter("select node_id ,nodetitle,formname ,(select count(*) from tbl_x where parentid=tbl.node_id)childCount from tbl_x tbl ", conn);
DataTable dt = newDataTable();
da.Fill(dt);
CreateNodes(dt, Mytree.Nodes);

}
privatevoid CreateNodes(DataTable yourdt, TreeNodeCollection yournode)
{
foreach (DataRow dr in yourdt.Rows)
{

TreeNode newNode = newTreeNode();

newNode.Text = dr["nodetitle"].ToString();
newNode.Value = dr["node_id"].ToString();

if (newNode.NavigateUrl == "")
{
newNode.SelectAction = TreeNodeSelectAction.None;
}
newNode.NavigateUrl = dr["formname"].ToString();
newNode.SelectAction = TreeNodeSelectAction.Expand;

yournode.Add(newNode);


newNode.PopulateOnDemand = ((int)dr["childCount"] > 0);

}
}
privatevoid CreateSubLevel(int parentId, TreeNode parentNode)
{
SqlDataAdapter da = newSqlDataAdapter("select node_id ,nodetitle,formname ,(select count(*) from tbl_x where parentid=tbl.node_id)childCount from tbl_x tbl where parentid =" + parentId, conn);
DataTable dt = newDataTable();
da.Fill(dt);
CreateNodes(dt, parentNode.ChildNodes);
}
protectedvoid Mytree_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
CreateSubLevel(Convert.ToInt32(e.Node.Value), e.Node);
}

arsalansalar
سه شنبه 12 آذر 1387, 08:31 صبح
این مشکل treeview یک موضل واسه بچه های تالار vb.net شده.اگه دوستانی که کد گذاشتند بیان در قالب یک پروژه اونو آپلود کنند و بقیه هم نسبت به اطلاعات خودشون اونو تکمیل کنند فکر کنم بتونیم واسه همیشه این مشکلو حل کنیم.چون هر 2 روز یک بار شاهد تاپیکی با عنوان تری ویو و دیتابیس هستیم.

rooshan2008
سه شنبه 12 آذر 1387, 13:18 عصر
سلام من قبلاً به یه همچین سوالی پاسخ داده بودم کاملاً درست کار می کنه فقط به دستور عمل ها کاملاً توجه کنید. البته برای بانک Sql Server
http://barnamenevis.org/forum/showthread.php?t=126047

arsalansalar
سه شنبه 12 آذر 1387, 13:36 عصر
با بانک اکسس هم مثال دارید؟