PDA

View Full Version : تبدیل تاریخ در دیتا گرید + حذف اعشار در نمایش عدد



mohammaduir
پنج شنبه 28 شهریور 1392, 23:31 عصر
سلام
من دیتا گریدم رو با کد زیر ایجاد کردم


Private Sub fillGridPersons()
Dim cn As New SqlClient.SqlConnection
cn.ConnectionString = "Data Source=ZE;Initial Catalog=Vhat;User Id=vhat;Password=92ko;"
oadmainLocal = New SqlDataAdapter("Select P_ID,P_FName,P_LName,P_FaName,P_DateTime,P_Sum from Persons", cn.ConnectionString)
dtmaindatatable = New DataTable

Try

oadmainLocal.Fill(dtmaindatatable)
bs = New BindingSource
bs.DataSource = dtmaindatatable
With GridViewPersons
.DataSource = Nothing
.DataSource = bs
'format grid


GridViewPersons.Font = New Font("b mitra", 11, FontStyle.Regular) ' change to Regular
GridViewPersons.Sort(GridViewPersons.Columns("P_ID"), System.ComponentModel.ListSortDirection.Descending )
GridViewPersons.RowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow
GridViewPersons.AlternatingRowsDefaultCellStyle.Ba ckColor = Color.White
.Columns(0).HeaderText = "ش پرونده"
.Columns(0).Width = 90
.Columns(0).DefaultCellStyle.BackColor = Color.Azure
.Columns(1).HeaderText = "نام"
.Columns(1).Width = 80
.Columns(2).HeaderText = "نام خانوادگی"
.Columns(2).Width = 100
.Columns(3).HeaderText = "نام پدر"
.Columns(3).Width = 75
.Columns(4).HeaderText = "تاریخ"
.Columns(4).Width = 100
.Columns(5).HeaderText = "آهزینه"
.Columns(5).Width = 190

.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.Cursor = Cursors.Hand
'TODO word wrap desc columns

'currentRowToolStripTextBox.Text = "1"

End With
Catch ex As Exception
MessageBox.Show("query error : " & ex.Message)
Finally

cn.Close()
End Try


End Sub



حالا چندتا مشکل دارم و اونم ایناس:
1.توی یکی از ستون هام که قراره مبلغ یک چیزی رو نشون بده و توی دیتابیس اون رو به صورت money تعریف کردم میاد و با اعشار نشون میده مثلا 250000.0000 . چیکار کنم که درست نشون بده

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

ممنون میشم کمکم کنید

mohammaduir
جمعه 29 شهریور 1392, 13:15 عصر
کسی نیست جواب بده لطفا:(

aliagamon
جمعه 29 شهریور 1392, 14:24 عصر
سوال اول:یه راه خیلی اسون داره که شما میتونید اونو به string تبدیل کنید بعد با replace همه ی . هارو با "" جابجا کنی ....
شوال دو:

Dim shamsi As New System.Globalization.PersianCalendar()
Dim sh As DateTime = New DateTime(2012, 6, 23)
Dim year As Integer = shamsi.GetYear(sh)
Dim month As Integer = shamsi.GetMonth(sh)
Dim day As Integer = shamsi.GetDayOfMonth(sh)

mohammaduir
جمعه 29 شهریور 1392, 22:30 عصر
این که تابع تبدیله
یه تیکه کد میخام فقط که مقدار یکی از ستون های دیتا گرید رو توی تابع تبدیل تاریخ بریزه و مجدد توی دیتا گرید نشون بده

aliagamon
جمعه 29 شهریور 1392, 23:41 عصر
اگر فرض بر این باشه که شما تاریخ رو استرینگ تعریف کرده باشین ... متونید استرینگ رو کانورت کنید ...البته براساس فرمت تاریخ میلادی که ذخیره میکنید باید ارایه اسپلیتر رو درست کنید (جای 1 و 2 رو در datetime هر طور نیازه تغییر بدین)

Dim datequr As String = "2010/20/11"
Dim shamsi As New System.Globalization.PersianCalendar()
Dim datesplitter As String() = datequr.Split("/")
Dim datetime As DateTime = New DateTime(datesplitter(0), datesplitter(2), datesplitter(1))
Dim shamsidatequr As String
shamsidatequr += shamsi.GetYear(datetime).ToString() + "/"
shamsidatequr += shamsi.GetMonth(datetime).ToString() + "/"
shamsidatequr += shamsi.GetDayOfMonth(datetime).ToString()

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