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

نام تاپیک: نمايش تاريخ شمسي در ديتا گريد

  1. #1

    نمايش تاريخ شمسي در ديتا گريد

    سلام
    ديتا گريد برنامه ام را به جدولي بايند كرده ام و اطلاعات جدول را در ديتاگريد نمايش مي دهم حال مشكل من اينست كه تاريخ را در جدول بصورت ميلادي ذخيره مي كنم و مي خواهم درستون مربوطه ديتاگريدم بصورت شمسي نمايش داده شود براي اين كار چه كدي در ديتاگريدم بنويسم
    باتشكر

  2. #2
    کاربر دائمی آواتار NIK
    تاریخ عضویت
    خرداد 1389
    سن
    39
    پست
    293

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

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

  3. #3
    کاربر تازه وارد آواتار انیشتین
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    تهران
    پست
    82

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    کار درست و اصولی اینه که از اول تاریخ رو بصورت شمسی ذخیره کنی.
    یعنی تاریخ رو تو دیتا بیس کاراکتر بگیری بعد با استفاده از یک تابع تو اینتر فیس اونو تبدیل به شمسی کنی و تاریخ شمسی رو بصورت رشته در دیتا بیس ذخیره کنی . همه جا همین کار رو میکنن.

  4. #4
    کاربر دائمی آواتار NIK
    تاریخ عضویت
    خرداد 1389
    سن
    39
    پست
    293

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    نقل قول نوشته شده توسط انیشتین مشاهده تاپیک
    کار درست و اصولی اینه که از اول تاریخ رو بصورت شمسی ذخیره کنی.
    یعنی تاریخ رو تو دیتا بیس کاراکتر بگیری بعد با استفاده از یک تابع تو اینتر فیس اونو تبدیل به شمسی کنی و تاریخ شمسی رو بصورت رشته در دیتا بیس ذخیره کنی . همه جا همین کار رو میکنن.
    من دقیقاً همین کار رو در یک پروژه کوچیک انجام دادم اما وقتی که تعداد رکوردهای برنامه زیاد شد، برای پردازش بر روی تاریخ و مقایسه اونها با هم زمان سرعت برنامه خیلی اومد پائین.

    روشی که بنده عرض کردم سرعت بالاتری نسبت به روش قبلی داره و فقط حجم دیتابیس کمی بیشتر میشه.

  5. #5
    کاربر تازه وارد آواتار انیشتین
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    تهران
    پست
    82

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

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

  6. #6

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    نقل قول نوشته شده توسط مسلم نیکنام مشاهده تاپیک
    سلام
    من برای حل این مشکل اول اطلاعات دیتابیسم رو تو یه دیتاتیبل میریزم بعد سطر به سطر تاریخ رو به شمسی برمیگردونم و در نهایت گریدویو رو به دیتاتیبل متصل میکنم.
    باسلام
    با يك كد ميشه بيشتر توضيح دهيد

  7. #7
    کاربر دائمی آواتار NIK
    تاریخ عضویت
    خرداد 1389
    سن
    39
    پست
    293

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    نقل قول نوشته شده توسط انیشتین مشاهده تاپیک
    برادر جان راهی که گفتم تو همه شرکت ها و برنامه های واقعی استفاده میشه و مشکلی نداره.
    شاید شما بدرستی پیاده سازی نکردی.
    اگر از این روش استفاده کنی جدول رو مستقیم به گرید ویو وصل میکنی و دیگه لازم نیست رو تک تک فیلد هاش کار انجام بدی.فکر کن شاید چند هزار تا رکورد داشته باشی...
    این راهی که من گفتم فقط یه تابع کوچیک تو اینتر فیس تاریخ رو تبدیل میکنه و کار دیگه ای لازم نیست که سرعت پایین بیاد.
    دوست من زمانی ممکن است شما نیاز داشته باشید رکورهای بین دو تاریخ رو بدست بیارین.
    اونوقت با یک Select معمولی نمیتونین این کار رو انجام بدین. نیاز به یه ایتورپروسیجر یا ... دارین که بتونه تاریخ های بین این بازه رو شناسایی کنه.
    اگه من نظری دادم چون دقیقاً خودم با این مشکل مواجه شدم و سرعت برنامم پائین اومده.
    البته نظر شما هم محترمه

  8. #8
    کاربر دائمی آواتار NIK
    تاریخ عضویت
    خرداد 1389
    سن
    39
    پست
    293

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    نقل قول نوشته شده توسط Iran58 مشاهده تاپیک
    باسلام
    با يك كد ميشه بيشتر توضيح دهيد
    اول یه من بگید قصد دارید دوباره اطلاعات رو در گریدویو ویرایش کنید؟

  9. #9

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    نقل قول نوشته شده توسط مسلم نیکنام مشاهده تاپیک
    اول یه من بگید قصد دارید دوباره اطلاعات رو در گریدویو ویرایش کنید؟
    باسلام
    نخيرفقط نمايش ميخواهم بدهم

  10. #10

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    توی DataBindingComplete کد زیر رو می تونی استفاده کنی

    privatevoid dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
    for(int i=0;i<dataGridView1.Rows.Count-1;i++)
    {
    dataGridView1.Rows[i].Cells[0].Value = changeDate((
    DateTime)dataGridView1.Rows[i].Cells[0].Value);
    }
    }
    تابع change date هم

    privatestring changeDate(DateTime dateend)
    {
    string RetDate;
    PersianCalendar p = newPersianCalendar();
    if ((p.GetMonth(dateend) < 10) && (p.GetDayOfMonth(dateend) < 10))
    {
    RetDate =
    string.Format("{0}/0{1}/0{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    }
    elseif (p.GetMonth(dateend) < 10)
    {
    RetDate =
    string.Format("{0}/0{1}/{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    }
    elseif (p.GetDayOfMonth(dateend) < 10)
    {
    RetDate =
    string.Format("{0}/{1}/0{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    }
    else
    RetDate = string.Format("{0}/{1}/{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    return RetDate;
    }

  11. #11
    کاربر دائمی آواتار mahdi87_gh
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    قزوین
    پست
    448

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    کار درست و اصولی اینه که از اول تاریخ رو بصورت شمسی ذخیره کنی
    حرف دوستمون انیشتین کاملا درسته
    دوست من زمانی ممکن است شما نیاز داشته باشید رکورهای بین دو تاریخ رو بدست بیارین.
    اونوقت با یک Select معمولی نمیتونین این کار رو انجام بدین
    با این حرف شما موافق نیستم!!
    به راحتی میتونید در یک select رکوردهای مابین دو تاریخ رو استخراج کنید. البته به این شرط که شما تاریخ رو به صورت کامل و 10 حرفی درون بانک ذخیره کنید. یعنی 1389/1/1 رو بصورت 1389/01/01 ذخیره کنید

  12. #12

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    ضمیمه 51645ضمیمه 51645
    نقل قول نوشته شده توسط sepideh_aghel مشاهده تاپیک
    توی DataBindingComplete کد زیر رو می تونی استفاده کنی

    privatevoid dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
    for(int i=0;i<dataGridView1.Rows.Count-1;i++)
    {
    dataGridView1.Rows[i].Cells[0].Value = changeDate((
    DateTime)dataGridView1.Rows[i].Cells[0].Value);
    }
    }
    تابع change date هم

    privatestring changeDate(DateTime dateend)
    {
    string RetDate;
    PersianCalendar p = newPersianCalendar();
    if ((p.GetMonth(dateend) < 10) && (p.GetDayOfMonth(dateend) < 10))
    {
    RetDate =
    string.Format("{0}/0{1}/0{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    }
    elseif (p.GetMonth(dateend) < 10)
    {
    RetDate =
    string.Format("{0}/0{1}/{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    }
    elseif (p.GetDayOfMonth(dateend) < 10)
    {
    RetDate =
    string.Format("{0}/{1}/0{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    }
    else
    RetDate = string.Format("{0}/{1}/{2} ", p.GetYear(dateend), p.GetMonth(dateend), p.GetDayOfMonth(dateend));
    return RetDate;
    }
    سلام
    هنگام كار باكد بالابه ارور زيربرخورده ام لطفاراهنماي كنيد
    فایل های ضمیمه فایل های ضمیمه

  13. #13

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    تاریخی که برای تابع ارسال کردید چه تاریخی؟اگر تاریخ صحیح نباشد error میده

  14. #14

    نقل قول: نمايش تاريخ شمسي در ديتا گريد

    نقل قول نوشته شده توسط sepideh_aghel مشاهده تاپیک
    تاریخی که برای تابع ارسال کردید چه تاریخی؟اگر تاریخ صحیح نباشد error میده
    سلام
    تاريخ براساس سال ،ماه ، روز وساعت مي باشد(2010/01/01/10:20:25)
    هم درديتاگريد تاريخ رابصورميلادي صحيح نمايش مي دهد(بدون ارور)وهم دربانك صحيح ثبت مي شود

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

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