PDA

View Full Version : پیاده سازی لیستی از enumها ef.



niloo17
شنبه 03 مرداد 1394, 18:54 عصر
سلام
من یک مدلی دارم که اطلاعات مراجعه کنندگان در اون دخیره می شه . یک سری از اطلاعات تکمیلی مربوط به مراجعه کنندگان هستند که می توان چند مورد را انتخاب کرد.
مثلا نحوه آشنایی می تواند چند مورد از گزینه های (اینترنت ، 118 ، دوستان و آشنایان ، تبلیغات محیطی ، معرفی پزشک ، پیامک، روزنامه و مجله ) که به عنوان enum در سیستم تعریف شده است باشد . بهترین روش برای پیاده سازی این مدل .
(برای گرفتن گزارش هم باید از این فیلد استفاده شود. )

ali_72
یک شنبه 04 مرداد 1394, 08:12 صبح
خوب کاربر هر کدوم از موراد رو که انتخاب کرد میتونی با , یا هر کاراکتر دیگه ای در پایگاه داده ذخیره کنی
امیدوارم سوالتو درست متوجه شده باشم

hakim22
یک شنبه 04 مرداد 1394, 08:30 صبح
فکر میکنم ef 5 به بعد از Enum پشتیبانی میکنه (در 6 پشتبانی داره) و نیازی به کار خاصی نیست. چیزی که در دیتبایس ذخیره میشه به صورت int هست و عدد enum انتخاب شده است.
ولی وقتی توسط ef برمیگرده به صورت enum هست.

همچنین برای نمایش enum به صورت یک dropdown به کاربر چند روش وجود داره که با کمی جستجو میتوانید کدشو پیدا کنید. مقاله ی خوبی از اسکات آلن (http://odetocode.com/blogs/scott/archive/2012/09/04/working-with-enums-and-templates-in-asp-net-mvc.aspx) در همین زمینه هست.
البته مشکل اینه که عبارتهایی که ما میخواهیم به کاربر نمایش بدیم فارسی هست ولی با تغییر همین کد میتوانید به این هدف دست پیدا کنید.

niloo17
یک شنبه 04 مرداد 1394, 09:56 صبح
خوب کاربر هر کدوم از موراد رو که انتخاب کرد میتونی با , یا هر کاراکتر دیگه ای در پایگاه داده ذخیره کنی
امیدوارم سوالتو درست متوجه شده باشم

ممنون از راهنماییتون
ولی می خوام بدونم ef روشی برای پیاده سازی این مورد داره یا نه !

niloo17
یک شنبه 04 مرداد 1394, 09:59 صبح
فکر میکنم ef 5 به بعد از Enum پشتیبانی میکنه (در 6 پشتبانی داره) و نیازی به کار خاصی نیست. چیزی که در دیتبایس ذخیره میشه به صورت int هست و عدد enum انتخاب شده است.
ولی وقتی توسط ef برمیگرده به صورت enum هست.

همچنین برای نمایش enum به صورت یک dropdown به کاربر چند روش وجود داره که با کمی جستجو میتوانید کدشو پیدا کنید. مقاله ی خوبی از اسکات آلن (http://odetocode.com/blogs/scott/archive/2012/09/04/working-with-enums-and-templates-in-asp-net-mvc.aspx) در همین زمینه هست.
البته مشکل اینه که عبارتهایی که ما میخواهیم به کاربر نمایش بدیم فارسی هست ولی با تغییر همین کد میتوانید به این هدف دست پیدا کنید.

ef ، enum را پشتیبانی می کنه .
ولی سوال من پساده سازی لیستی از enumها است
List<enum>

ali_72
دوشنبه 05 مرداد 1394, 07:39 صبح
ممنون از راهنماییتون
ولی می خوام بدونم ef روشی برای پیاده سازی این مورد داره یا نه !

من دقیقا متوجه مشکلت نشدم

منظورت اینه که یه فیلد داری که مقدارش میتونه یک یا چند گزینه از یه نوع enum باشه و نمی دونی چطور در پایگاه داده ذخیره کنی؟
یا در قسمت view مشکل داری و نمیدونی که چطور باید به کاربر قابلیت انتخاب چند مورد از یه لیست رو بدی؟

اصلا میخوای به کاربر قابلیت انتخاب چند آیتم بدی یا نه؟

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

همه اینا راه حل داره

اگه تمایل داشتید یه خورده توضیحات بیشتری بدبد تا بتونیم راهنمایی کنیم
موفق باشی

niloo17
دوشنبه 05 مرداد 1394, 09:55 صبح
یه فیلد دارم که مقدارش یک یا جند گزینه از یک enum است .
1. روش پیاده سازی در مدل (چه جوری در دیتابیس پیاده سازی کنم.)
2.در view می تونم با گذاشتن لیستی از checkbox ها پیاده سازی کنم که کاربر امکان انتخاب چند مورد داشته باشه . ولی اگر روش بهینه تری برای پیاده سازی است از روش دیگیری استفاده کنم.
3.در گزارش هم باید امکان گزارش گیری بر اساس چند انتخاب از این نوع داده ای داشته باشیم.
ممنون

ali_72
سه شنبه 06 مرداد 1394, 07:26 صبح
یه فیلد دارم که مقدارش یک یا جند گزینه از یک enum است .
1. روش پیاده سازی در مدل (چه جوری در دیتابیس پیاده سازی کنم.)
2.در view می تونم با گذاشتن لیستی از checkbox ها پیاده سازی کنم که کاربر امکان انتخاب چند مورد داشته باشه . ولی اگر روش بهینه تری برای پیاده سازی است از روش دیگیری استفاده کنم.
3.در گزارش هم باید امکان گزارش گیری بر اساس چند انتخاب از این نوع داده ای داشته باشیم.
ممنون

ممنون بابت توضیحات کامل شما
من خودم تو پروژه ها اینطوری استفاده میکنم:
شما میتونی یک viewmodel برای ثبت بسازی که در اون این فیلد از نوع string باشه، و در view از دراپ داون لیست با قابلیت انتخاب چند آیتم میذاری (از لینک http://blogs.msdn.com/b/rickandy/archive/2012/01/30/asp-net-mvc-dropdownlist-multiselect-and-jquery.aspx استفاده کن) این در پست بک در کنترلر بهت چنین رشته ای میده item1,item2,item3

خوب همین رشته رو تو پایگاه داده ذخیره کن
در گزارش گیری هم با توجه به فرمی که برای گزارش میسازی میتونی کوئری های مناسب بنویسی (امیدوارم از entity code first استفاده کنی. کد ترتمیزی باهاش مینویسی)

موفق باشی

niloo17
پنج شنبه 15 مرداد 1394, 21:04 عصر
من از کد زیر در view استفاده کردم.


@Html.ListBoxFor(m => m.LearnHow, new MultiSelectList(ViewBag.LearnHow, "Value", "Text", Model.LearnHow),
new { @class = "chosen-select chosen-rtl form-control", multiple = "multiple", data_placeholder = "انتخاب مراجعه کننده..." })

لیست enumها نمایش داده میشه . ولی در مقداری که بر می گردون اولین مقدار لیست انتخاب شده است .

ali_72
جمعه 16 مرداد 1394, 13:06 عصر
من از کد زیر در view استفاده کردم.


@Html.ListBoxFor(m => m.LearnHow, new MultiSelectList(ViewBag.LearnHow, "Value", "Text", Model.LearnHow),
new { @class = "chosen-select chosen-rtl form-control", multiple = "multiple", data_placeholder = "انتخاب مراجعه کننده..." })

لیست enumها نمایش داده میشه . ولی در مقداری که بر می گردون اولین مقدار لیست انتخاب شده است .

از کتابخانه jquery درست استفاده کردی؟
چند تا آیتم رو مییتونی انتخاب کنی؟
اگه همه قسمتا درست انجام داده باشی مثلا یه enum داری شامل item1,item2,item3,item4
اگه item1 و item4 رو انتخاب کنی
سمت کنترلر چنین رشته ای پاس داده میشه
item1,item4

این برای n آیتم هم همین طوره

niloo17
جمعه 16 مرداد 1394, 14:21 عصر
بله من از این کتابخانه برای لیست هایی از آیتم ها استفاده کرده ام و مشکلی نداره.
اینجا هم LearnHow از نوع string لیست enumها نمایش داده می شه و قابلیت انتخاب چند آیتم وجود دارد. ولی چون نوع آن string چیزی که به کنترلر پاس داده می شه اولین آیتم انتخاب شده است.

ali_72
شنبه 17 مرداد 1394, 07:10 صبح
بله من از این کتابخانه برای لیست هایی از آیتم ها استفاده کرده ام و مشکلی نداره.
اینجا هم LearnHow از نوع string لیست enumها نمایش داده می شه و قابلیت انتخاب چند آیتم وجود دارد. ولی چون نوع آن string چیزی که به کنترلر پاس داده می شه اولین آیتم انتخاب شده است.

نوع string بودنش که درسته
من در خیلی از پروژه ها استفاده کردم
و بدون مشکل تمام آیتم های انتخابی با همین شکل که گفتم به کنترلر ارسال شد item1,ietm3,item5

از اینترنت نمونه پروژه برای این کار زیاده
یکی دانلود کن ببین مشکل کارت کجاست