private readonly DataSet data = new DataSet(); private DataTable parentTable; private DataTable childTable; private DataTable grandChildTable; private DataRelation parentChildRelation; private DataRelation childGrandChildRelation; private void Form1_Load(object sender, EventArgs e) { var connection = new SqlConnection("connection string here"); var parentAdapter = new SqlDataAdapter("SELECT ParentId, ParentName FROM Parent", connection); var childAdapter = new SqlDataAdapter("SELECT ParentId, ChildId, ChildName FROM Child", connection); var grandChildAdapter = new SqlDataAdapter("SELECT ChildId, GrandChildId, GrandChildName FROM GrandChild", connection); connection.Open(); parentAdapter.Fill(data, "Parent"); childAdapter.Fill(data, "Child"); grandChildAdapter.Fill(data, "GrandChild"); connection.Close(); parentTable = data.Tables["Parent"]; childTable = data.Tables["Child"]; grandChildTable = data.Tables["GrandChild"]; parentChildRelation = data.Relations.Add(parentTable.Columns["ParentId"], childTable.Columns["ChildId"]); childGrandChildRelation = data.Relations.Add(childTable.Columns["ChildId"], grandChildTable.Columns["GrandChild"]); this.treeView1.Nodes.AddRange(GetParentNodes()); } private TreeNode[] GetParentNodes() { var parentNodes = new List<TreeNode>(); foreach (var parentRow in parentTable.AsEnumerable()) { var parentNode = new TreeNode((string) parentRow["ParentName"]); parentNode.Nodes.AddRange(GetChildNodes(parentRow)); parentNodes.Add(parentNode); } return parentNodes.ToArray(); } private TreeNode[] GetChildNodes(DataRow parentRow) { var childNodes = new List<TreeNode>(); foreach (var childRow in parentRow.GetChildRows(parentChildRelation)) { var childNode = new TreeNode((string) childRow["ChildName"]); childNode.Nodes.AddRange(GetGrandChildNodes(childRow)); childNodes.Add(childNode); } return childNodes.ToArray(); } private TreeNode[] GetGrandChildNodes(DataRow childRow) { var grandChildNodes = new List<TreeNode>(); foreach (var grandChildRow in childRow.GetChildRows(childGrandChildRelation)) { var grandChildNode = new TreeNode((string) grandChildRow["GrandChildName"]); grandChildNodes.Add(grandChildNode); } return grandChildNodes.ToArray(); }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;
public partial class Default3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
private readonly DataSet data = new DataSet();
private DataTable parentTable;
private DataTable childTable;
private DataTable grandChildTable;
private DataRelation parentChildRelation;
private DataRelation childGrandChildRelation;
private void Form1_Load(object sender, EventArgs e)
{
var connection = new MySqlConnection("connection string here");
var parentAdapter = new MySqlDataAdapter("SELECT ParentId, ParentName FROM Parent", connection);
var childAdapter = new MySqlDataAdapter("SELECT ParentId, ChildId, ChildName FROM Child", connection);
var grandChildAdapter = new MySqlDataAdapter("SELECT ChildId, GrandChildId, GrandChildName FROM GrandChild", connection);
connection.Open();
parentAdapter.Fill(data, "Parent");
childAdapter.Fill(data, "Child");
grandChildAdapter.Fill(data, "GrandChild");
connection.Close();
parentTable = data.Tables["Parent"];
childTable = data.Tables["Child"];
grandChildTable = data.Tables["GrandChild"];
parentChildRelation = data.Relations.Add(parentTable.Columns["ParentId"], childTable.Columns["ChildId"]);
childGrandChildRelation = data.Relations.Add(childTable.Columns["ChildId"], grandChildTable.Columns["GrandChild"]);
this.TreeView1.Nodes.AddAt(GetParentNodes());
}
private TreeNode[] GetParentNodes()
{
var parentNodes = new List<TreeNode>();
foreach (var parentRow in parentTable.AsEnumerable())
{
var parentNode = new TreeNode((string)parentRow["ParentName"]);
parentNode.Nodes.AddRange(GetChildNodes(parentRow));
parentNodes.Add(parentNode);
}
return parentNodes.ToArray();
}
private TreeNode[] GetChildNodes(DataRow parentRow)
{
var childNodes = new List<TreeNode>();
foreach (var childRow in parentRow.GetChildRows(parentChildRelation))
{
var childNode = new TreeNode((string)childRow["ChildName"]);
childNode.Nodes.AddRange(GetGrandChildNodes(childRow));
childNodes.Add(childNode);
}
return childNodes.ToArray();
}
private TreeNode[] GetGrandChildNodes(DataRow childRow)
{
var grandChildNodes = new List<TreeNode>();
foreach (var grandChildRow in childRow.GetChildRows(childGrandChildRelation))
{
var grandChildNode = new TreeNode((string)grandChildRow["GrandChildName"]);
grandChildNodes.Add(grandChildNode);
}
return grandChildNodes.ToArray();
}
}
FROM
SELECT
`a1_locaismaq`.`clienteninc`,
`a1_locaismaq`.`localmaq_inc`,
`a2_maquinas`.`maquinas_ninc`,
`a3_ponto_lub`.`maquinas_ninc`,
`a2_maquinas`.`localmaq_inc`,
.................................................
`a2_maquinas`
INNER JOIN `a3_ponto_lub` ON (`a2_maquinas`.`maquinas_ninc` = `a3_ponto_lub`.`maquinas_ninc`)
INNER JOIN `a1_locaismaq` ON (`a1_locaismaq`.`localmaq_inc` = `a2_maquinas`.`localmaq_inc`)
INNER JOIN `a4_materias` ON (`a3_ponto_lub`.`ponto_inc` = `a4_materias`.`ponto_inc`)
INNER JOIN `clientes` ON (`a1_locaismaq`.`clienteninc` = `clientes`.`clienteninc`)
Absolutely, e.g.Thank?s can i make a join and make a Treeview from a single query?
var sql = @"SELECT p.ParentId, ParentName, ChildId, ChildName FROM Parent p INNER JOIN Child c ON p.ParentId = c.ParentId ORDER BY p.ParentId, ChildId"; var adapter = new SqlDataAdapter(sql, connectionString); var table = new DataTable(); adapter.Fill(table); int currentParentId = 0; foreach (DataRow row in table.Rows) { var parentId = (int) row["ParentId"]; if (parentId != currentParentId) { // New parent. // ... currentParentId = parentId; } // ... }
Already did.Query is done as for the tree can you give some help please
foreach (DataRow row in TrevCliente.Rows)
{
var parentId = (int)row["clienteninc"];
if (parentId != currentParentId)
{
TreeNode node = new TreeNode();
node.Text = row["morada"].ToString();
node.Value = row["clienteninc"].ToString();
// New parent.
// ...
currentParentId = parentId;
TreeView1.Nodes.Add(node);
}
foreach (DataRow childRow in parentId.GetChildRows("SecondHierarchy"))
{
TreeNode childNode = new TreeNode((string)childRow["ChildText"], Convert.ToString(childRow["ChildID"]));
masterNode.ChildNodes.Add(childNode);
childNode.Value = Convert.ToString(childRow["Child"]);
}
// ...
}
var sql = @"SELECT p.ParentId, ParentName, ChildId, ChildName FROM Parent p INNER JOIN Child c ON p.ParentId = c.ParentId ORDER BY p.ParentId, ChildId"; var adapter = new SqlDataAdapter(sql, connectionString); var table = new DataTable(); adapter.Fill(table); int currentParentId = 0; int currentChildId = 0; foreach (DataRow row in table.Rows) { var parentId = (int) row["ParentId"]; var childId = (int) row["ChildId"]; if (childId != currentChildId) { // New child. // ... if (parentId != currentParentId) { // New parent. // ... currentParentId = parentId; } // ... currentChildId = childId; } // ...
Ntabela2.Text = TreeView1.SelectedNode.ValuePath;
Hi jmcilhinney
Wow can i go to other page if i click in the chield of the TreeView (../../..).
Thank You