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

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

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

شنبه, 07 مهر 1397 23:53

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

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

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

یکشنبه, 08 مهر 1397 11:14

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

ﺳﻪ شنبه, 10 مهر 1397 22:45

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

public string Time { get; set; }

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

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

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

چهارشنبه, 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 { }
        }

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

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

یک توضیح کوچک

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

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

و 

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

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

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

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

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

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

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

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

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

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

پنج شنبه, 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 رو کجا اعمال کنم؟

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

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

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

کسانی که از این پست تشکر کرده اند : farzadini,

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید