PDA

View Full Version : سوال: روش استفاده از treeviwe در چند جدول



yosefyosef
دوشنبه 03 فروردین 1388, 21:44 عصر
من قصد دارم یک کتاب خانه درست کنم برای همین در اکسس سه جدول نوشتم اولی لیست کتاب ها وجدول دوم لیست فهرست های هر کتاب ودر جدول سوم متن کتاب بصورت صفحه صفحه ومی خواهم در tree viwe نمايش داده شود به اين صورت وقتى برنامه ظاهر شود ليست كتاب ها نمايش داده شود ووقتي روي كتاب دو بار كليك كند فهرست كتاب نمايش داده شود ووقتي روي يكى از موضوعات فهرست كتاب كليك كند متن در RichEdit نمايش داده شود .
لطفا كمكم كنيد با تشكر

unique1984
سه شنبه 04 فروردین 1388, 14:03 عصر
سلام
مشابه چنین کاری رو با بانک Sql انجام دادم. کدش رو می ذارم دیگه خودتون تغییرات لازم رو انجام بدین.

protected DataSet PDataset(string Select_Statement)
{
SqlConnection cn = new SqlConnection("server=(local);database=test;uid=;pwd=;trusted_con nection=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(); درست جواب نمیده ، فعلا فرصت ندارم تا ببینم درستش چیه.:چشمک:

yosefyosef
شنبه 08 فروردین 1388, 13:35 عصر
از شما خیلی ممنونم
خیلی امتحان کردم ولی موفق نشدم به دیتا اکسس کانکت بشم
اگر بیشتر توضیح بدهی چگونه به دیتا بیس وصل شدید واگر توضیح بیشتر در باره
فیلدها table شما شاید بهتر بتونم استفاده کنم
با تشکر

hasan_esfahan
شنبه 08 فروردین 1388, 15:30 عصر
یک سری به این تاپیک بزن
http://barnamenevis.org/forum/showthread.php?t=149036