PDA

View Full Version : سوال: ذخیره treeview در database



star_game
یک شنبه 04 دی 1390, 11:17 صبح
با سلام
من یک treeview دارم که می تونیم در حین اجرا برنامه شاخه و زیرشاخه ایجاد کنیم حالا می خوام این شاخه ها و زیرشاخه ها را در sql ذخیره کنم که وقتی برنامه را دوباره اجرا می کنم همه شاخه ها و زیرشاخه ها را نمایش بده table مربوطه رو درست کردم ولی نمی دونم چطوری داده توش ذخیره کنم کسی می تونه کمکم کنه؟؟؟؟؟؟
مرسی خیلی گیرم

star_game
چهارشنبه 07 دی 1390, 09:01 صبح
کسی نمی تونه مشکل منو حل کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
دوستان اگه بلدید یه کمکی کنید مرسی.

modern_amin
چهارشنبه 07 دی 1390, 09:14 صبح
سلام
من همین الان درگیر همین کارم
تونستم ذخیره کنم ، به این ترتیب که اونجا که داری به نود Add میکنی ، همونجا کدهای ذخیره رو بنویس
.
ولی من تو لود مجدد نمی دونم از کدوم راه استفاده کنم بهتره

zarrinnegar
چهارشنبه 07 دی 1390, 09:18 صبح
ببین برای tree 3 تا فیلد لازمه
1 - NodeID int
2 - Node_Name nvarchr(50)
3 - ParentID int

این هم کد برای رسم tree
البته مقادیرش رو با جدول خودت عوض کن


private TreeView tView = new TreeView();
public void PopulateTree()

{

DataTable dt = new DataTable();
Hashtable ht = new Hashtable();
SqlConnection conn = new SqlConnection("data source=tstsvr;initial catalog=TreeTest;integrated security=SSPI;");

new SqlDataAdapter("SELECT * FROM Nodes ORDER BY NodeLevel Asc", conn).Fill(dt);
foreach (DataRow r in dt.Rows)
{
int nodeLvl = int.Parse(r["NodeLevel"].ToString());
string nodeParent = r["Parent"].ToString();
string nodeName = r["Name"].ToString();

TreeNode tNode = new TreeNode(nodeName);
ht.Add(nodeLvl.ToString() + nodeName, tNode);

if (tView.Nodes.Count == 0)
tView.Nodes.Add(tNode);
else
{
nodeLvl --;
((TreeNode) ht[nodeLvl.ToString() + nodeParent]).Nodes.Add(tNode);
}
}
ht.Clear();
}

modern_amin
چهارشنبه 07 دی 1390, 09:25 صبح
میدونی که بعد از اینکه تو برنامه بصورت دینامیک نود رو ساختیم و تو دیتابیس ذخیره کردیم ، بعد بسته شدن و دوباره اجرا شدن برنامه ، نود هااا می پره و اگه ما تو دیتابیس ذخیره کرده باشیم و بتونیم لود کنیم مشکل حله!!!
.
حالا سوال اینه با چه روشی و چطوری از دیتابیس لود شه؟؟
آیا دستوری هست تمام زیر شاخه ها (منظورم تا آخرین زیرشاخه) رو به راحتی بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

zarrinnegar
چهارشنبه 07 دی 1390, 09:29 صبح
حالا سوال اینه با چه روشی و چطوری از دیتابیس لود شه؟؟
آیا دستوری هست تمام زیر شاخه ها (منظورم تا آخرین زیرشاخه) رو به راحتی بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟


اونی که نوشتم پس چیکار میکنه؟:متفکر:

modern_amin
چهارشنبه 07 دی 1390, 09:48 صبح
new SqlDataAdapter("SELECT * FROM Nodes ORDER BY NodeLevel Asc", conn).Fill(dt);

دوست عزیز با تشکر از جواب شما
این چیه؟ :متفکر: NodeLevel
و دیتا بیس این نود به نظر شما با چه فیلدهایی طراحی شده؟
.

من که تو کارم نام ، نام پدر ، توضیحات و ... رو ذخیره می کنم

zarrinnegar
چهارشنبه 07 دی 1390, 10:02 صبح
گفتم که یک جدولی که برای tree ساخته میشود حد اقل دارای 3 فیلد میباشد
یکی کد اصلی که همان NodeLevel است دوم فیلد نام که همان Name است سوم کد والد که زیر گروه کدام کد است فیلد Parent

حالا جدول خودت رو باهاش میزون کن
بجای NodeLevel کد پرسنل رو بزار و بجای Name نامی که میخوای توی tree نشون بده رو بزار و بجای Parent کد والد اون پرسنل رو بزار

modern_amin
چهارشنبه 07 دی 1390, 10:17 صبح
دوست من از توضیحات شما کمال تشکر و دارم
منظورتووون رو فهمیدم
خودتون این کار رو تست کردید که با زیر شاخه های بالا جواب میده؟؟؟ اولین نود رو با چه شاخه ای ذخیره کنیم؟
آیا نمونه برنامه ای هم دارید؟؟

star_game
یک شنبه 11 دی 1390, 12:20 عصر
از کمکتون ممنونم تونستم ذخیره کنم حالا درگیر لود مجددم ایشالا درست می کنم