PDA

View Full Version : سوال: تبدیل تاریخ در DataGridView



xperator
شنبه 07 اسفند 1389, 01:18 صبح
سلام
من یه برنامه دیتابیس دارم می نویسم. با Datagridview هم نتیجه جستجو رو نشون دادم.
اما تاریخ ها توی بانک همه میلادی هستند. می خواستم بدونم چطور می شه ستون تاریخ رو تبدیل کنم ؟
کد تبدیل تاریخ میلادی به شمسی رو هم دارم.


ColumnDate.DataPropertyName = "FldSDate"

ممنون

reza_edu
شنبه 07 اسفند 1389, 10:29 صبح
سلام دوست عزیز این ابزار به هیچ وجه تاریخ فارسی رو ساپورت نمیکنن (تا اونجاکه من میدونم) بهتره فیلد تاریخ رو رشته در نظر بگیرید تو جستجو و مرتب سازی هم هیچ مشکلی نداره من تست کردم . البته با کد نویسی میشه فرمت نمایش داده های تاریخ رو تو یه ستون عوض کرد اما زمانی که بخواد یه تاریخی مثل تاریخ زیر رو نمایش بده یک خطا ایجاد میکنه{1389/2/31} چون تو سال میلادی ماه دوم 28 روز هست نه سی و یک روز.

xperator
شنبه 07 اسفند 1389, 12:56 عصر
سلام دوباره. راهش رو پیدا کردم. باید توی رویداد Cell formatting مقدار ستون تاریخ رو تبدیل کرد.
کدش رو می نویسم شاید کسی در آینده احتیاج پیدا کنه.

If e.ColumnIndex = 1 Then
If Not e.Value Is Nothing Then
e.Value = PersianDate(e.Value)
End If
End If
Columnindex شماره اندیس ستون مورد نظر هست.

saeednews
یک شنبه 15 اسفند 1389, 22:49 عصر
مرسی - چطور میشه سرچ براش درست کرد.
من یک برنامه دیدم بجای تکس باکس خالی نوشته بود --/--/---- و نمیتونستی مثلا روز 32 یا ماه 13 وارد کنی ؟؟؟
کدش را شما دارید.

xperator
یک شنبه 15 اسفند 1389, 22:59 عصر
من برای جستجو از فیلتر BindingSource استفاده کردم تا فقط تاریخ هایی که کاربر می خواد رو توی Datagridview نشون بده.
اما اگر می خوای هر سطر رو بگردین من انجام ندادم.

اون تکس باکسی که شما میگی اسمش MaskedTextBox هست که می تونید خودتون اضافه کنید و براش Mask دلخواه در نظر بگیرید.
و برای اینکه معتبر بودن تاریخ رو مطمئن بشی باید رویداد TypeValidationComplete رو زیر نظر بگیری. vb.net برای تاریخ های میلادی اینکار رو بصورت خودکار انجام میده اما برای تاریخ شمسی باید براش کد بنویسی.

saeednews
یک شنبه 15 اسفند 1389, 23:10 عصر
کد تاریخ فارسی را دارید؟

xperator
یک شنبه 15 اسفند 1389, 23:30 عصر
متوجه نمی شم کد چی ؟ کد تبدیل تاریخ میلادی به شمسی که توی سایت هست.
دقیقا می خوای چیکار کنی؟

saeednews
دوشنبه 16 اسفند 1389, 00:11 صبح
و برای اینکه معتبر بودن تاریخ رو مطمئن بشی باید رویداد TypeValidationComplete رو زیر نظر بگیری. vb.net برای تاریخ های میلادی اینکار رو بصورت خودکار انجام میده اما برای تاریخ شمسی باید براش کد بنویسی.

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

xperator
دوشنبه 16 اسفند 1389, 00:50 صبح
خوب اول یه Maskedtextbox بساز. بعد Mask اون رو به 0000/00/00 تغییر بده تا قالب دریافت تاریخ شمسی بشه.
بعد توی form load این کد رو بنویس براش:
txtDate.ValidatingType = GetType(System.DateTime)
بعد رویداد TypeValidation رو صدا بزن و کد تبدیل تاریخ رو اونجا بنویس.
Dim t As String
t = CToGregorianDate(txtDate.Text)
If t = "" Then
StatusBar.Text = "تاریخ معتبر نمی باشد"
txtDate.BackColor = Color.Khaki
txtDate.Focus()
Exit Sub
End If
حالا تنها کاری که باید بکنی اینه که یه کد تبدیل تاریخ شمسی به میلادی پیدا کنی که توی فروم سرچ کن من خودم از اینجا برداشتم.
بعدش با کمی دستکاری می تونی طوری تابع رو تعریف کنی که اگر کاربر تعداد روز های بیشتر از 31 و تعداد ماه های بیشتر از 12 رو وارد کرد جوابی برنگردونه.

دیگه دیر وقت شد تا بعد یا علی