سلام
مشابه چنین کاری رو با بانک Sql انجام دادم. کدش رو می ذارم دیگه خودتون تغییرات لازم رو انجام بدین.
protected DataSet PDataset(string Select_Statement)
{
SqlConnection cn = new SqlConnection("server=(local);database=test;uid=;p wd=;trusted_connection=yes");
SqlDataAdapter ad = new SqlDataAdapter(Select_Statement, cn);
DataSet ds = new DataSet();
ad.Fill(ds);
return ds;
}
private void Fill_Tree()
{
DataSet ds1 = PDataset("select * from tbl_book");
treeView1.Nodes.Clear();
foreach (DataRow dr in ds1.Tables[0].Rows)
{
TreeNode parent = new TreeNode();
parent.Text = dr["book"].ToString();
parent.Name = dr["bid"].ToString();
DataSet ds2 = PDataset("select * from tbl_doc where bid=" + parent.Name.ToString());
foreach (DataRow dr2 in ds2.Tables[0].Rows)
{
TreeNode child = new TreeNode();
child.Text = dr2["docname"].ToString();
child.Name = dr2["did"].ToString();
parent.Nodes.Add(child);
}
treeView1.Nodes.Add(parent);
}
}
private void Form1_Load(object sender, EventArgs e)
{
Fill_Tree();
}
تا این قسمت برای پر کردن درختتون با دو سطح هستش.
فکر کنم کدها به اندازه کافی واضح هستند ، اما بهتره یه چیزی رو توضیح بدم.
برای هر نود ، یک Text و یک Name رو مقدار دهی میکنیم. text در واقع همون چیزی هست که در نودها برای ما نمایش داده میشه و به name، اون فیلدی که ارتباط بین دو جدول رو می سازه ، نسبت میدیم .
و اما برای اینکه وقتی روی نود سطح دوم کلیک کردیم ، متن مربوط به اون در تکست نمایش داده بشه:
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node.Level == 1)
{
DataSet ds = PDataset("select * from tbl_education where did=" + e.Node.Name.ToString());
richTextBox1.Text = ds.Tables[0].Rows[1].ToString();
}
}
البته این خط richTextBox1.Text = ds.Tables[0].Rows[0].ToString();
درست جواب نمیده ، فعلا فرصت ندارم تا ببینم درستش چیه.