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

نام تاپیک: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

  1. #1

    اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    سلام دوستان..سوال اولم اینه
    1) چجوری میشه enum رو تبدیل به Dropdown list کرد که مقداری که توی دیتابیس میشینه عدد باشه و مقداری که به کاربر نمایش داده میشه ( هنگام انتخاب از لیست) متن فارسی باشه؟
    مثلا فرض کنید کاربر داره یه فرم پر میکنه که باید نوع دوربین های مدار بسته رو مشخص کنه.. حالا ما هم 4 تا نوع بیشتر نداریم که به صورت استاتیک هست.میخوام Value این Dropdown عدد باشه و مقداری نمایشی اون به کاربر متن فارسی باشه.

    2) حالا فرض کنیم کار بالارو انجام دادیم و یه فیلد به اسم Type داخل دیتابیس داریم از نوع int که توش مثلا 1و2و3و4 ذخیره شده. چجوری میشه به جای اعداد به کاربر پیام مناسب نشون بدیم؟ من اومدم یه تابع تعریف کردم که بهش عدد میدی و با دستور سویچ میاد رشته مناسب رو بر میگردونه..حالا من اینجا اگه 1000 تا نوع داشته باشم یعنی باید هزار خط کد بنویسم؟ خب منطقی نیست این قضیه..
    سوال دومم هم میتونه ربطی به سوال اول نداشته باشه..می خوام بدونم بهترین راه چیه برای سوال دوم

  2. #2
    کاربر دائمی آواتار parvizwpf
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    TEH
    پست
    2,919

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    چرا نوع هاتون رو توی دیتابیس تعریف نمیکنید که راحت بتونید بایندش کنید به دراپ دان؟ بنظرم این وسط enum اون هم برای 1000 تا تایپ بی معنی باشه باید نام انگلیسی و فارسی در دییتابیس براش بگیرید چون میگید ممکنه دینامیک بشه بعدها

  3. #3

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    نقل قول نوشته شده توسط parvizwpf مشاهده تاپیک
    چرا نوع هاتون رو توی دیتابیس تعریف نمیکنید که راحت بتونید بایندش کنید به دراپ دان؟ بنظرم این وسط enum اون هم برای 1000 تا تایپ بی معنی باشه باید نام انگلیسی و فارسی در دییتابیس براش بگیرید چون میگید ممکنه دینامیک بشه بعدها
    البته این مثالی که زدم 1000 تا ممکنه واسه این مورد حق با شما باشه نباید این مثال رو میزدم.
    اما می خوام بدونم در کل راهش چی هست؟

  4. #4

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    نقل قول نوشته شده توسط سعید کشاورز مشاهده تاپیک
    سلام دوستان..سوال اولم اینه
    1) چجوری میشه enum رو تبدیل به Dropdown list کرد که مقداری که توی دیتابیس میشینه عدد باشه و مقداری که به کاربر نمایش داده میشه ( هنگام انتخاب از لیست) متن فارسی باشه؟
    مثلا فرض کنید کاربر داره یه فرم پر میکنه که باید نوع دوربین های مدار بسته رو مشخص کنه.. حالا ما هم 4 تا نوع بیشتر نداریم که به صورت استاتیک هست.میخوام Value این Dropdown عدد باشه و مقداری نمایشی اون به کاربر متن فارسی باشه.

    2) حالا فرض کنیم کار بالارو انجام دادیم و یه فیلد به اسم Type داخل دیتابیس داریم از نوع int که توش مثلا 1و2و3و4 ذخیره شده. چجوری میشه به جای اعداد به کاربر پیام مناسب نشون بدیم؟ من اومدم یه تابع تعریف کردم که بهش عدد میدی و با دستور سویچ میاد رشته مناسب رو بر میگردونه..حالا من اینجا اگه 1000 تا نوع داشته باشم یعنی باید هزار خط کد بنویسم؟ خب منطقی نیست این قضیه..
    سوال دومم هم میتونه ربطی به سوال اول نداشته باشه..می خوام بدونم بهترین راه چیه برای سوال دوم
    سلام
    1- باید ببینید ورودی dropdown چی هست و همون شکل رو بهش بایند کنید پس نهایتا شما enum رو باید به شکلی تغییر بدید که به خودش بگیره این dropdown که با کدنویسی قابل انجام باید باشه و طبیعتا شما برای دارپ دان یا کمبو و ...text همیشه متن این کنترل ها هست و مقدار یک عدد

    2- شما یک ستون در جدولی x دارید که باید یک مقدار دیگر رو نگه داره که این مقدار از یک جدول پایه که متصل به دارپ هست میاد و اون شامل حداقل دو فیلد به نام Id و Text هست و نه فقط یک Id .

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

  5. #5

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    نقل قول نوشته شده توسط سعید کشاورز مشاهده تاپیک
    البته این مثالی که زدم 1000 تا ممکنه واسه این مورد حق با شما باشه نباید این مثال رو میزدم.
    اما می خوام بدونم در کل راهش چی هست؟
    شما به مقادیر استاتیک اشاره کردید پس اگر هست میتونید با Enum هندلش کنید

  6. #6

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر


  7. #7

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    این مقاله احتمالا کمکتون میکنه : https://www.danylkoweb.com/Blog/5-mo...d-for-enums-LL

  8. #8

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    خیلی راحته، enum هاتون رو تعریف کنین و برای هر مقدار اتریبیوت display رو بذارین، مثلا به این شکل:
    public enum PaymentTypes : byte
    {
    [Display(Name = "نقدی")]
    نقدی = 1,

    [Display(Name = "اینترنتی")]
    اینترنتی = 2,

    [Display(Name = "کارت خوان")]
    کارت_خوان = 3,
    }

    حالا توی کلاستون یه فیلد از نوع همین enum تعریف کنین و داخل view توسط هلپری که خود mvc در اختیارمون میذاره این enum رو تبدیل به dropdownlist میکنیم:

    @Html.EnumDropDownListFor(model => model.PaymentType, "-- نوع پرداخت را انتخاب کنید --", htmlAttributes: new { @class = "form-control" })

    کار تمومه، همونطور که میخواین، توی دیتابیس عدد میشینه و توی ویو عنوان فارسی نمایش داده میشه

  9. #9

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    برای لیست های داینامیک از دیتا بیس استفاده کنید.منظور از دیتا بیس هر جا که بشه مقداری رو ذخیره کرد.
    برای لیست ها کوتاه از همین روشی که آقای سیروان فرمودند استفاده کنین.

    اما در کل برای سایت های پویا حتما از دیتا بیس استفاده کنید.در مثالی بالا payment type ممکنه در آینده تغییر کنه.بنا به اقتضای مدیریت سایت.

  10. #10

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    برای متن فارسی می توانید از Display استفاده کنید.


    public enum ContestState
    {
    [Display(Name="جدید")]
    New=0,


    [Display(Name = "شروع شده")]
    Started =1,


    [Display(Name = "تمام شده")]
    Finished =2,


    [Display(Name = "حذف شده")]
    Deleted = 3
    }


    برای اینکه به صورت Dropdown در ویو دیده بشه از Html.EnumDropDownListFor استفاده کنید.

    برای اینکه بعد مقدار مربوط به هر کدام از Display هارو بدست بیارید می توانید از کد زیر استفاده کنید :

    https://gist.github.com/codehaks/a9a...281824ca4929d8

    وقتی Namespace رو به کد مربوطه در ویو اضافه کنید برای نمایش مقدار فارسی دستور زیر کافیه :


    @Model.ContestState.DisplayName()

  11. #11
    کاربر دائمی آواتار LostOfMind
    تاریخ عضویت
    اسفند 1391
    محل زندگی
    گیلان -آستانه اشرفیه
    پست
    315

    نقل قول: اسفاده از enum و نمایش مقدار قابل خواندن به کاربر

    نقل قول نوشته شده توسط سعید کشاورز مشاهده تاپیک
    سلام دوستان..سوال اولم اینه
    1) چجوری میشه enum رو تبدیل به Dropdown list کرد که مقداری که توی دیتابیس میشینه عدد باشه و مقداری که به کاربر نمایش داده میشه ( هنگام انتخاب از لیست) متن فارسی باشه؟
    مثلا فرض کنید کاربر داره یه فرم پر میکنه که باید نوع دوربین های مدار بسته رو مشخص کنه.. حالا ما هم 4 تا نوع بیشتر نداریم که به صورت استاتیک هست.میخوام Value این Dropdown عدد باشه و مقداری نمایشی اون به کاربر متن فارسی باشه.

    2) حالا فرض کنیم کار بالارو انجام دادیم و یه فیلد به اسم Type داخل دیتابیس داریم از نوع int که توش مثلا 1و2و3و4 ذخیره شده. چجوری میشه به جای اعداد به کاربر پیام مناسب نشون بدیم؟ من اومدم یه تابع تعریف کردم که بهش عدد میدی و با دستور سویچ میاد رشته مناسب رو بر میگردونه..حالا من اینجا اگه 1000 تا نوع داشته باشم یعنی باید هزار خط کد بنویسم؟ خب منطقی نیست این قضیه..
    سوال دومم هم میتونه ربطی به سوال اول نداشته باشه..می خوام بدونم بهترین راه چیه برای سوال دوم

    اول یک enum ایجاد کنید مانند زیر

    public enum ContentType
    {
    [Display(Name ="متن اول")]
    content1 = 0,
    [Display(Name ="متن دوم")]
    content2 = 1,
    }


    این هم dropdown :


    @Html.EnumDropDownListFor(model => model.contentType, new { @class = "form-control select2" })


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


    public static class EnumExtensions
    {
    /// <summary>
    /// Retrieves the <see cref="DisplayAttribute.Name" /> property on the <see cref="DisplayAttribute" />
    /// of the current enum value, or the enum's member name if the <see cref="DisplayAttribute" /> is not present.
    /// </summary>
    /// <param name="val">This enum member to get the name for.</param>
    /// <returns>The <see cref="DisplayAttribute.Name" /> property on the <see cref="DisplayAttribute" /> attribute, if present.</returns>
    public static string GetDisplayName(this Enum val)
    {
    return val.GetType()
    .GetMember(val.ToString())
    .FirstOrDefault()
    ?.GetCustomAttribute<DisplayAttribute>(false)
    ?.Name
    ?? val.ToString();
    }
    }


    کافیه نام متد رو صدا بزنید مانند :


    ContentType.content1.GetDisplayName)(

تاپیک های مشابه

  1. مبتدی: خواندن مقدار VarBinary از sql و نمایش عکس در gridview
    نوشته شده توسط MasoudAdmin در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 20 دی 1394, 06:49 صبح
  2. نمایش پیام سفارشی شده به کاربر
    نوشته شده توسط crying sphere در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 04 اسفند 1393, 11:26 صبح
  3. انتخاب یه سطر از GridView و نمایش مقدار یک فیلد در لیبل
    نوشته شده توسط B.I.O.H.A.Z.A.R.D در بخش WPF
    پاسخ: 3
    آخرین پست: جمعه 21 بهمن 1390, 20:23 عصر
  4. نمایش مقدار یک فیلد از جدول درmsgbox
    نوشته شده توسط اتوسا در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 07 مهر 1386, 16:26 عصر
  5. پاسخ: 7
    آخرین پست: شنبه 01 اردیبهشت 1386, 20:50 عصر

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

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