luser |
Вопрос такой (наверно оч простой, но я новичок ) есть база с тремя таблицами: Objects, Nodes, Units
Objects: Id, Name, Description
Nodes: Id, ObjectId, Name, Desciption
Units: Id, NodeId, Name, Description
Нужно сделать из этого древовидное меню: Объекты в каждом объекте связанные с ним Узлы в каждом узле связанные с ним Юниты
Если кто-нибудь выручит подробным алгоритмом или кусочком кода буду очень признателен. |
Ну вот простенький пример, только по связке з двумя таблицами, может поможет
const string connectionString = @"Provider = Microsoft.Jet.OleDb.4.0;" +
"data source = C:/basa.mdb";
DataSet ds = new DataSet();
public TreeNode root;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
myTree();
TreeView1.CollapseAll();
TreeView1.ShowLines = true;
}
}
public void myTree()
{
ds = basa();
foreach (DataRow dr in ds.Tables["film"].Rows)
{
root = new TreeNode("Название - " + (string)dr["Film"]);
TreeView1.Nodes.Add(root);
foreach (DataRow childRow in dr.GetChildRows("film"))
{
TreeNode childNode = new TreeNode((string)childRow["genre"]);
TreeNode childNode2 = new TreeNode((string)childRow["image"].ToString());
TreeNode childNode3 = new TreeNode((string)childRow["year"].ToString());
root.ChildNodes.Add(childNode);
root.ChildNodes.Add(childNode2);
root.ChildNodes.Add(childNode3);
}
}
}
public DataSet basa()
{
OleDbConnection con = new OleDbConnection(connectionString);
OleDbDataAdapter daFilm = new OleDbDataAdapter("SELECT * FROM film", con);
OleDbDataAdapter daFinfo = new OleDbDataAdapter("SELECT * FROM dataF", con);
ds = new DataSet();
daFilm.Fill(ds, "film");
daFinfo.Fill(ds, "dataF");
ds.Relations.Add("film", ds.Tables["film"].Columns["id"], ds.Tables["dataF"].Columns["id"]);
return ds;
}