ورود

View Full Version : تعریف اطلاعات به صورت درختی



resident
دوشنبه 21 مهر 1393, 10:30 صبح
سلام. وقت بخیر
من میخوام یه سری اطلاعات رو به صورت درختی تعریف کنم و کاربر بتونه چند node از این درخت رو انتخاب کنه
چطور می تونم این کار رو انجام بدم؟

resident
سه شنبه 22 مهر 1393, 08:38 صبح
اساتید کمک نمی فرمایید؟:گریه::گریه:

مهدی کرامتی
سه شنبه 22 مهر 1393, 09:45 صبح
گیر شما برای طراحی در سمت دیتابیس هست یا برنامه؟

businessMg
سه شنبه 22 مهر 1393, 10:08 صبح
گیر شما برای طراحی در سمت دیتابیس هست یا برنامه؟

...........

resident
سه شنبه 22 مهر 1393, 14:06 عصر
سمت برنامه.
اینکه کاربر بتونه ریشه و نودها رو تعریف و ویرایش کنه. بعد این درخت رو نمایش بدیم و اینکه کاربر بتونه یک یا چند نود رو انتخاب کنه و ما آیدی اون نودها رو ذخیره کنیم.

اصراری روی درختی بودنش ندارم ولی میخوام تا n سطح بشه زیر مجموعه درست کرد و کاربر یک یا چند نود رو انتخاب کنه(برای گروه بندی محصولات). تنها چیزی که به ذهنم رسید درختی بودن بود.
اگه روش دیگه ای هم هست که بهتره بفرمایید

HOSSEINONLINE7
سه شنبه 22 مهر 1393, 15:00 عصر
سمت برنامه.
اینکه کاربر بتونه ریشه و نودها رو تعریف و ویرایش کنه. بعد این درخت رو نمایش بدیم و اینکه کاربر بتونه یک یا چند نود رو انتخاب کنه و ما آیدی اون نودها رو ذخیره کنیم.

اصراری روی درختی بودنش ندارم ولی میخوام تا n سطح بشه زیر مجموعه درست کرد و کاربر یک یا چند نود رو انتخاب کنه(برای گروه بندی محصولات). تنها چیزی که به ذهنم رسید درختی بودن بود.
اگه روش دیگه ای هم هست که بهتره بفرمایید

اگر منظورتون را درست متوجه شده باشم شما میخواید لیست گروهها را نمایش بدید که هر گروه ممکنه شامل چند تا زیر گروه باشه .

مثلا گروه سیستم عامل چند زیر مجموعه مثل لینوکس - مک - ویندوز داره و اینها هم باز چند زیر مجموعه دارن که یک ساختار درختی میشه .

برای نمایشش من از کنترل Select استفاده میکنم . توی View یک تابع بازگشتی باید نوشته بشه و هربار یکی از گره ها را میخونه و چک میکنه Parent Id بقیه ی لیست با اون گره مساوی هستن یا خیر که اگر مساوی بودن میشه زیر مجموعه ی گره ی فعلی .

اینم یک نمونه کد :

@helper Node(int? parentId, string space)
{
foreach (var item in Model.Where(p => p.ParentId == parentId).ToList())
{
<option value="@item.Id" parentid="@item.ParentId">@space + @item.Name</option>
Node(item.Id, space + "&nbsp;&nbsp;&nbsp;")
}
}


<select>
<option value="">گروه اصلی</option>
@Node(null, "")
</select>




البته فکر کنم یک پلاگین آماده برای نمایش ساختار درختی باشه که شاید دوستان اطلاع داشته باشن ولی من از همین روش استفاده میکنم.

resident
سه شنبه 22 مهر 1393, 15:02 عصر
مرسی از شما. بله منظورم همین بود
علاوه بر نمایش میخوام کاربر بتونه بک یا چند تا از این زیرمجموعه ها رو انتخاب کنه و من id شونو تو بانک نگه دارم و هر زمان نیاز شد به کاربر نشون بدم کدوم زیرمجموعه ها رو انتخاب کرده بوده

HOSSEINONLINE7
سه شنبه 22 مهر 1393, 15:42 عصر
مرسی از شما. بله منظورم همین بود
علاوه بر نمایش میخوام کاربر بتونه بک یا چند تا از این زیرمجموعه ها رو انتخاب کنه و من id شونو تو بانک نگه دارم و هر زمان نیاز شد به کاربر نشون بدم کدوم زیرمجموعه ها رو انتخاب کرده بوده

برای اینم کافیه خاصیت multiple را به Select بدی تا امکان چندین انتخاب با نگه داشتن کلید Ctrl را داشته باشه .

از طریق خاصیت Value هم به مقادیر گره ها دسترسی دارید .