مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

farzadini

عضویت از 1395/11/01

تاریخ شمسی در ستون دیتاگرید

  • شنبه 7 مهر 1397
  • 23:53
تشکر میکنم

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

یک جا گفته بود از رویداد LoadingRowشروع کنم ولی ادامه رو ننوشته بود. 

پاسخ های این پرسش

تعداد پاسخ ها : 8 پاسخ
کاربر سایت

salman_b

عضویت از 1396/02/18

  • یکشنبه 8 مهر 1397
  • 11:14

به راحتی میتونید توی getter تاریخ در مدل، به جای تاریخ میلادی تاریخ خورشیدی رو برگردونید.

کاربر سایت

farzadini

عضویت از 1395/11/01

  • سه شنبه 10 مهر 1397
  • 22:45

با تشکر از توجه شما اگر دیتاگرید من یک ستون به اسم Time داشته باشه اون وقت 

public string Time { get; set; }

این کدی هست که توی جدول که طرف سی شارپ باشه یکی یکی ستون ها رو get; set;  کرده و دیتا گرید من به این جدول وصل هست.

منظورتون همینجاست؟

یعنی کدهائی که برای شمسی کردن تاریخ دارم رو اینجا بنویسم؟ سخت هست برایم کمی بیشتر راهنمائی امکان داره؟

کاربر سایت

salman_b

عضویت از 1396/02/18

  • چهارشنبه 11 مهر 1397
  • 08:13

زمانی که داره Get میکنه باید تبدیل شده به خورشیدی رو برگردونین مثل کد زیر:

        public string Time
        {
            get
            {
                DateTime englishDate = DateTime.Parse(Time);
                PersianCalendar pc = new PersianCalendar();
                return string.Format("{0}/{1}/{2}", pc.GetYear(englishDate), pc.GetMonth(englishDate).ToString("00"), pc.GetDayOfMonth(englishDate).ToString("00"));
            }
            set { }
        }

کاربر سایت

farzadini

عضویت از 1395/11/01

  • چهارشنبه 11 مهر 1397
  • 19:40

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

یک توضیح کوچک

البته متوجه شدم که Time در SQL  بصورت استرینگ بود که من جدول رواصلاح کردم و یک ستون به اسم  MiladiDate که از نوع date در اس کیو ال بود ایجاد کردم. که تاریخ رو برای من مشخص می کنه

با این توصیف در کد شما بجای Time که شما get , set رو نوشتید من به این صورت در آوردم لطفا بفرمائید کجا رو اصلاح کنم؟

و 

خط بعدی رو هم این ایراد میگیره 

چه جائی رو باید تغییر بدم امکان داره اشکال بخاطر MiladiDate از نوع date باشه؟

کاربر سایت

salman_b

عضویت از 1396/02/18

  • پنجشنبه 12 مهر 1397
  • 05:27

کدی که من بهتون دارم برای ورودی و خروجی از نوع string کار میکنه

اما شما داری آبجکتی از نوع Nullable DateTime بهش میدی.

باید این قسمت رو به string تغییر بدی

کاربر سایت

farzadini

عضویت از 1395/11/01

  • پنجشنبه 12 مهر 1397
  • 09:03

ایراد دیگری میگیره اینو دیگه نمیدونم علتش چیه؟ 

این خطا رو می گیره 

Cannot evaluate expression because the current thread is in a stack overflow state.

کاربر سایت

farzadini

عضویت از 1395/11/01

  • پنجشنبه 12 مهر 1397
  • 11:06
public string MiladiDate { get; set; }

    public string PersianDate
    {
        get
        {
            DateTime englishDate = DateTime.Parse(MiladiDate);
            PersianCalendar pc = new PersianCalendar();
            return string.Format("{0}/{1}/{2}", pc.GetYear(englishDate), pc.GetMonth(englishDate).ToString("00"), pc.GetDayOfMonth(englishDate).ToString("00"));
        }
    }

در اینجا که پرسیدم راه حل رو بصورت بالا دادند ولی در این صورت تاریخ میلادی بر میگرده یعنی PersianDate رو کجا اعمال کنم؟

کاربر سایت

salman_b

عضویت از 1396/02/18

  • پنجشنبه 12 مهر 1397
  • 12:56

خب این رو که اول بهتون گفتم!!! 😐

همین تاریخ فارسی رو برمیگردونه فقط باید peraiandate رو به دیتاگرید بدید تا تاریخ رو از اینجا بخونه نه miladidate

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)