1 ضمیمه
خواندن اطلاعات از دو جدول و پر کردن TreeView
با سلام به همه
من دو تا جدول دارم که یکی برای سطح بندی هست و یکی از جداول هم اطلاعات کاربر و سطح اون رو از جدول سطح پر می کنه.
جدول سطح من
LevelTitle |
LevelID |
سطح یک |
1 |
سطح دو |
2 |
سطح سه |
3 |
و جدول کاربران
LevelID |
FullName |
UserID |
1 |
Test1 |
1 |
1 |
Test2 |
2 |
1 |
Test3 |
3 |
2 |
Test4 |
4 |
2 |
Test5 |
5 |
3 |
Test6 |
6 |
1 |
Test7 |
7 |
3 |
Test8 |
8 |
حالا می خوام یک TreeView داشته باشم که اول نودهای اصلی رو از جدول سطح بخونه و بعد از جدول کاربران، کاربرانی که در سطح اون نود اصلی هستند قرار بگیرند.
یعنی نتیجه مثل تصویر نمایش داده شود.
ضمیمه 150803
ممنون میشم کمک کنید.
نقل قول: خواند اطلاعات از دو جدول و پر کردن TreeView
کسی نیست من رو راهنمایی و یاری کند؟:افسرده::ناراحت:
نقل قول: خواند اطلاعات از دو جدول و پر کردن TreeView
فقط لازمه یک حلقه برای جدول 1 بسازین و در اون، علاوه بر اضافه نمودن خود نام سطح، یک حلقه برای جستجو در جدول 2 و نوشتن ردیف های با id برابر، هم قرار بدین.
نقل قول: خواند اطلاعات از دو جدول و پر کردن TreeView
با سلام
این تکه کد که نودهای اصلی رو پر کردم. حالا تو این حلقه چجوری یک حلقه دیگه بگذارم؟
while (DrLevel.Read()) {
TreeNode Node = new TreeNode(DrLevel["LevelID"].ToString().Trim());
this.tvMembers.Nodes.Add(Node);
}
DrLevel.Close();
ممنون میشم راهنمایی کنید.
نقل قول: خواندن اطلاعات از دو جدول و پر کردن TreeView
بعد از خط دو این کد را قرار دهید:
while (DrUser.Read()) {
TreeNode cNode = new TreeNode(DrUser["FullName"].ToString().Trim());
if (DrUser["LevelID"].ToString().Trim() == DrLevel["LevelID"].ToString().Trim()) Node.Nodes.Add(cNode);
}DrUser.Close();
نقل قول: خواندن اطلاعات از دو جدول و پر کردن TreeView
با سلام.
من کد رو به صورت زیر تغییر دادم:
oleDbCmdMain.CommandText = "Select * From Tbl_Level ORDER BY LevelID";
OleDbDataReader DrLevel = this.oleDbCmdMain.ExecuteReader();
oleDbCmdUsers.CommandText = "Select * From VW_MembersByRoot";
OleDbDataReader DrUser = this.oleDbCmdUsers.ExecuteReader();
while (DrLevel.Read())
{
TreeNode Node = new TreeNode(DrLevel["LevelID"].ToString().Trim());
this.tvMembers.Nodes.Add(Node);
while (DrUser.Read())
{
TreeNode cNode = new TreeNode(DrUser["FullName"].ToString().Trim());
if (DrUser["LevelID"].ToString().Trim() == DrLevel["LevelID"].ToString().Trim())
Node.Nodes.Add(cNode);
}
DrUser.Close();
}
DrLevel.Close();
ولی خطا داره:
System.InvalidOperationException: 'Invalid attempt to call Read when reader is closed.'
:افسرده::افسرده::ناراحت::نار حت:
ممنون میشم راهنمایی کنید تا کد رو اصلاح کنم و خطاش رفع بشه.
نقل قول: خواندن اطلاعات از دو جدول و پر کردن TreeView
druser.close رو به آخر کد و کنار اون یکی منتقل کن و از حلقه درش بیار
نقل قول: خواندن اطلاعات از دو جدول و پر کردن TreeView
خطای کد رفع شد ولی باز فقط اولین Node رو پر میکنه و بقیه Nodeها خالی میمونه.:متفکر::ناراحت:
نقل قول: خواندن اطلاعات از دو جدول و پر کردن TreeView
oleDbCmdMain.CommandText = "Select * From Tbl_Level ORDER BY LevelID";
OleDbDataReader DrLevel = this.oleDbCmdMain.ExecuteReader();
while (DrLevel.Read())
{
TreeNode Node = new TreeNode(DrLevel["LevelID"].ToString().Trim());
this.tvMembers.Nodes.Add(Node);
oleDbCmdUsers.CommandText = "Select * From VW_MembersByRoot";
OleDbDataReader DrUser = this.oleDbCmdUsers.ExecuteReader();
while (DrUser.Read())
{
TreeNode cNode = new TreeNode(DrUser["FullName"].ToString().Trim());
if (DrUser["LevelID"].ToString().Trim() == DrLevel["LevelID"].ToString().Trim())
Node.Nodes.Add(cNode);
}
DrUser.Close();
}
DrLevel.Close();
نقل قول: خواندن اطلاعات از دو جدول و پر کردن TreeView
سپاس فراوان.:تشویق::تشویق: