نمایش نتایج 1 تا 12 از 12

نام تاپیک: ذخیره TreeView در دیتابیس

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #12
    کاربر دائمی آواتار ShayanFiroozi
    تاریخ عضویت
    شهریور 1397
    محل زندگی
    بندرعباس ، خلیج همیشه فارس
    سن
    39
    پست
    226

    نقل قول: ذخیره TreeView در دیتابیس

    سلام دوست عزیز ،

    شما مشخص نکردین نوع 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 به عنوان آرگومان پاس داده میشن تا تموم بشن !!
    آخرین ویرایش به وسیله ShayanFiroozi : دوشنبه 08 اردیبهشت 1399 در 09:37 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •