PDA

View Full Version : سوال: استراتژی مقدار دهی داده های سلسله مراتبی



اوبالیت به بو
سه شنبه 24 بهمن 1391, 21:51 عصر
درود بر شما

فرض کنید که می خواید برای یکسری کالا، خبر، انبار یا هر گزینه ای یک دسته بندی انجام بدید.

یعنی قرار هست که در نهایت کاربر یک TreeView ببینه که وقتی روی یکی از گره ها کلیک کرد بتونه یک رکورد جدید که زیر مجموعه اون دسته بندی هست درج کند.

حالا سوال من اینه که چطور باید یک TreeView رو ساخت؟ یعنی چطور این دسته بندی ها باید انجام بشه؟ منظورم مقادیر نهایی در دیتابایس است.

clover
چهارشنبه 25 بهمن 1391, 01:00 صبح
سلام

حالا سوال من اینه که چطور باید یک TreeView رو ساخت؟
به پروژه ای که به عنوان مثال ضمیمه شده دقت کنید.


یعنی چطور این دسته بندی ها باید انجام بشه؟ منظورم مقادیر نهایی در دیتابایس است.
در صورتی که قصد دارید یک زیر شاخه به یکی از شاخه هایی که توسط کاربر انتخاب شده اضافه کنید کافیه Id اون شاخه رو بگیرید و به عنوان ParentId شاخه ی جدید ست کنید:

string id = TreeView1.SelectedNode.Value;

برای محصولات یا اخبار یا هر موجودیت دیگه ای که در جدولی جداگانه قرار داره هم به همین شکل عمل می کنید.

موفق باشید.

اوبالیت به بو
چهارشنبه 25 بهمن 1391, 09:14 صبح
دست شما درد نکنه اما منظور من این نبود.

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

برای ویرایش کردن چطور دسته بندی ها رو از پدری به پدر دیگر جابه جا می کنید؟

و ...

clover
چهارشنبه 25 بهمن 1391, 11:01 صبح
فرض کنید الان می خواید اسامی دسته بندی ها رو وارد کنید. می خواید بگید این دسته بندی زیر مجموعه دسته بندی قبلی هست. یا این دسته بندی خودش ریشه سطح صفر درخت هست. چه کار می کنید؟

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

این روش معایبی داره و یکی از اون ها اینه که در تعداد بالای شاخه، انتخاب شاخه از لیست مشکل میشه.
یکی دیگه از راه ها استفاده از همین TreeView هست که داخل یک بلاک با سایز محدود و قابل اسکرول قرار بگیره

روش های پیشرفته تری هم میشه مثال زد، مثلا در حالت ابتدایی یک لیست کشویی داشته باشیم که شاخه های پدر رو نشون میده، با انتخاب هر شاخه لیست کشویی جدیدی در جلوی اون ایجاد بشه که زیر شاخه های اون رو نمایش بده، و در هر سطحی اگر گزینه ی اول (نال) انتخاب بشه کل لیست های کشویی ظاهر شده ی بعدی ناپدید بشه. برای ویرایش در این حالت باید در حالت ابتدایی کل مسیر (لیست های کشویی) تا رسیدن به اون شاخه خاص ایجاد بشه و بعد کاربر می تونه تغییرات رو انجام بده.


در تمام این موارد موقع ویرایش نباید خود شاخه و زیر شاخه هاش قابل انتخاب باشند، برای راحتی می تونید موقع واکشی شاخه ها از دیتابیس شاخه مورد نظر و کلیه زیر شاخه هاش رو نادیده بگیرید تا نیازی به چک کردن یا کار اضافی موقع ذخیره نباشه.


برای ویرایش کردن چطور دسته بندی ها رو از پدری به پدر دیگر جابه جا می کنید؟
موضوع زیاد پیچیده ای نیست، در مورد انتقال ها فقط تغییر ParentId شاخه ی مورد نظر باید انجام بشه (و مسلما با این کار کل زیر شاخه ها هم انتقال پیدا می کنند)

اوبالیت به بو
چهارشنبه 25 بهمن 1391, 12:51 عصر
روش های مختلفی هست که میشه راجع بهش بحث کرد. به شخصه در موقع معرفی شاخه ها برای مشخص کردن شاخه ی پدر از یک لیست کشویی سفارشی استفاده می کنم که آیتم های داخل اون به صورت درختی ظاهر میشن، در موقع اضافه کردن در صورتی که هیچ گزینه ای انتخاب نشده باشه (گزینه ی اول مقدار نال داره) میشه شاخه ی اصلی. برای ویرایش یک شاخه (انتقال به شاخه ی دیگه) از همین لیست استفاده میشه اما باید دقت کنید که خود شاخه (و مسلما زیر شاخه هاش) نباید در لیست ظاهر بشه.

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


درود بر شما

میشه یک تصویر از این محیط برام بگذارید. خوب درک نکردم.

clover
چهارشنبه 25 بهمن 1391, 14:38 عصر
میشه یک تصویر از این محیط برام بگذارید. خوب درک نکردم.
بله خواهش می کنم

99998