PDA

View Full Version : ذخیره TreeView در دیتابیس



water_lily_2012
سه شنبه 30 شهریور 1389, 07:38 صبح
سلام

من یه TreeView دارم که حدود چند هزار Node داره البته فکر نکنم تعداد فرقی بکنه
حالا می خوام به ترتیب این Node ها را وارد دیتابیس اکسس کنم.
برعکس این روش را می دونم ولی ریختن تو دیتابیس را بلد نیستم
یعنی بلد نیستم node را به ترتیب بخونم و وارد جدول کنم.

fjm11100
سه شنبه 30 شهریور 1389, 10:05 صبح
اگر درختت شاخه ها و زیر شاخه هایی با عمق متفاوت داره توصیه میکنم از نوع xml استفاده کنی که نمیدونم اکسس ساپورتش میکنه یا نه وگرنه مجبوری اول یه فکری به حال روش ذخیره کردنش کنی بعد فکری به حال نحوه ذخیره سازیش کنی.

water_lily_2012
چهارشنبه 31 شهریور 1389, 05:31 صبح
بله هر شاخه تعداد خاص خودش را داره و تعداد خاص متفاوت هستند
ولی چرا اکسس پشتیبانی نمی کنه. من الان اطلاعات را دستی وارد جدول کرده ام ولی برنامه از جدول می خونه و مشکلی هم ندارم
حتی می تونم یه Node را هم با آیکن در جدول ذخیره کنم و برگردانم

مشکل من در خواندن از ابتدا تا انتهای TreeVeiw هست

amir65gh
چهارشنبه 31 شهریور 1389, 06:54 صبح
Recursive function برادر Recursive function
با XML کار خودتو سخت نکن

اَرژنگ
چهارشنبه 31 شهریور 1389, 08:31 صبح
Recursive function برادر Recursive function
با XML کار خودتو سخت نکن
چیزی سخت در مورد XML وجود ندارد، ولی از اکسس بهتر اس‌کیو‌ال اکسپرس هستش که هم مجانی و هم بیشتر پشتیبانی شده.

water_lily_2012
چهارشنبه 31 شهریور 1389, 16:41 عصر
لطفاً یکی این چند خط کد را بده
و من را راحت کنه.

mmd2009
چهارشنبه 31 شهریور 1389, 16:56 عصر
با سلام

خودت یک بار دیگه سعی کن اگر نشد برنامتو بذار تا کدش رو برات بنویسم و بهت بدم

موفق باشی

water_lily_2012
چهارشنبه 31 شهریور 1389, 17:00 عصر
تازه قرار این برنامه را بنویسم، هنوز چیزی ننوشتم
از اولش به این مشکل خوردم،

MSN_Issue
چهارشنبه 31 شهریور 1389, 17:20 عصر
همون طور که یکی از دوستان گفت ، بهترین و ساده ترین راه (البته ساده برای بعضی ها !) استفاده از توابع بازگشتی است ...

water_lily_2012
چهارشنبه 31 شهریور 1389, 17:24 عصر
Recursive function برادر Recursive function
با XML کار خودتو سخت نکن


از این تابع یه کم می دونم

abbasmohr
دوشنبه 08 اردیبهشت 1399, 04:15 صبح
سلام دوستان
اگه کسی ذخیره و بازیابی treeveiw رو توی هرفایلی ( text , access, xml , .. ) می دونه لطفاً یه چند خط کد یا یه نمونه بزاره
ممنون از راهنمایی های مفیدتون

ShayanFiroozi
دوشنبه 08 اردیبهشت 1399, 09:18 صبح
سلام دوست عزیز ،

شما مشخص نکردین نوع Traverse چجوری باشه ، چون در درخت های باینری چند نوع پیمایش داریم ،

اما برای اینکه موضوع سخت نشه و کار به الگوریتم و ریاضی کشیده نشه اول شما باید TreeView رو پیمایش کنین :



private void PrintRecursive(TreeNode treeNode)
{

MessageBox.Show(treeNode.Text);

foreach (TreeNode tn in treeNode.Nodes)
{
PrintRecursive(tn);
}
}




private void CallRecursive(TreeView treeView)
{
TreeNodeCollection nodes = treeView.Nodes;

foreach (TreeNode n in nodes)
{
PrintRecursive(n);
}
}



ضمنا دوستانی که نظرشون این هست که توابع بازگشتی پیچیده هستند حق با اوناست ولی در مواردی خاص مثل اینجا تقریبا چاره ای نیست ، مگر اینکه بخواین خودتونو الکی درگیر لیست ها و سایز TreeView و موارد اینجوری کنین که کدتون بیشتر پیچیده و زیاد میشه و صد البته با خطاها احتمالی بیشتر.


شما در خصوص پیمایش تست کنین اگر نتیجه بخش بود در خصوص ذخیره در بانک اطلاعاتی هم با هم فکری خواهیم کرد.:لبخندساده:

** توجه کنین اگر چند هزار نود دارین پیشنهاد میکنم تابع MessageBox رو جایگزین کنین ، چون هیچکس دوست نداره هزاران MessageBox سمج روی صفحش ظاهر بشه که نمیذارن حتی دکمه Stop Debug رو بزنین !! :چشمک:


*** آپدیت :

درخصوص نحوه کارش شما شی TreeView رو به عنوان آرگومان پاس میدین به تابع CallRecursive ، اون میاد تمام نود ها رو در یک کالکشن ذخیره میکنه ( البته نگران حافظه نباشین اینا در حافظه رم فقط Link میگیرن ، Copy نمیشن)
بعد از اون یه حلقه foreach میاد تمام اون کالکشن نود ها رو پیمایش میکنه و با هر بار پیمایش تایع PrintRecursive رو فراخوانی میکنه.

در تایع PrintRecursive هم یک حلقه دیگه تمام نود های زیر مجموعشو صدا میزنه و باز هم برای هر کدوم خود تابع رو صدا میزنه و دوباره روز از نو ، روزی از نو !
انقدر این تابع خودشو رو صدا میرنن و نود ها به شکل Parent/Child به عنوان آرگومان پاس داده میشن تا تموم بشن !!