PDA

View Full Version : نمایش تاریخ میلادی به صورت تاریخ شمسی در دیتا گرید



elmira_63
چهارشنبه 18 خرداد 1390, 09:52 صبح
سلام
من تاریخ رو در دیتابیسم به صورت میلادی ذخیره می کنم حالا می خوام این اطلاعات رو در یک grid view نشون بدم ولی تاریخ رو به صورت شمسی نمایش بده ، در ضمن بنده با تبدیل تاریخ مشکلی ندارم فقط میخوام بدونم چطور باید در gridview تاریخ میلادی رو با شمسی جابجا کنم

ASPX
چهارشنبه 18 خرداد 1390, 11:01 صبح
با سلام
ستون مربوطه در دیتا گرید را به template Field تبدیل کن .چیزی میشود شبیه به این

<asp:Label ID="DocumentPublishDate" runat="server"
Text='<%# Eval("DocumentPublishDate") %>'></asp:Label>
حالا با استفاده از تابعی که کد میلادی رو به شمسی تبدیل میکند کد بالا را تغییر دهید

<asp:Label ID="DocumentPublishDate" runat="server"
Text='<%# ConvertDateTime(Eval("DocumentPublishDate")) %>'></asp:Label>
در انتها تابع ConvertDateTime که مبدل است باید به صورت پابلیک تعریف شود.
در مورد تبدیل میلادی به شمسی هم خیلی مطلب نوشته شده است سرچ بفرمایید

elmira_63
چهارشنبه 18 خرداد 1390, 14:44 عصر
با سلام
ستون مربوطه در دیتا گرید را به template Field تبدیل کن .چیزی میشود شبیه به این

<asp:Label ID="DocumentPublishDate" runat="server"
Text='<%# Eval("DocumentPublishDate") %>'></asp:Label>
حالا با استفاده از تابعی که کد میلادی رو به شمسی تبدیل میکند کد بالا را تغییر دهید

<asp:Label ID="DocumentPublishDate" runat="server"
Text='<%# ConvertDateTime(Eval("DocumentPublishDate")) %>'></asp:Label>
در انتها تابع ConvertDateTime که مبدل است باید به صورت پابلیک تعریف شود.
در مورد تبدیل میلادی به شمسی هم خیلی مطلب نوشته شده است سرچ بفرمایید

من با یه dll کار convert کردن تاریخ رو انجام میدم و توی item template هم به این صورت عمل کردم


<

asp:TemplateField HeaderText=" ">


<ItemTemplate>


<asp:Label ID="Lbl_Date" runat="server" Text='<%# (Eval("xDate")).ToShortShamsiDate() %>'></asp:Label>


</ItemTemplate>


<ItemStyle Width="80px" />


</asp:TemplateField>


.ToShortShamsiDate() هم برای تبدیل کردن تاریخ میلادی به شمسی هست
و xDate هم یه فیلد از نوع تاریخ در دیتابیسمه

ولی این err ها رو بهم میده


Error 133 'object' does not contain a definition for 'ToShortShamsiDate' and the best extension method overload 'ExtensionDate.ToShortShamsiDate(System.DateTime)' has some invalid arguments D:\asp\Kar1\Admin\Propaganda.aspx 1 1 D:\asp\Kar1\



Error 134 Instance argument: cannot convert from 'object' to 'System.DateTime' D:\asp\Kar1\Admin\Propaganda.aspx 1 1 D:\asp\Kar1\

ASPX
چهارشنبه 18 خرداد 1390, 16:36 عصر
برای تبدیل تاریخ از این تابع استفاده کن

public string ConvertDateTime(object o)
{
try
{

System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
int year = pc.GetYear(Convert.ToDateTime(o));
int month = pc.GetMonth(Convert.ToDateTime(o));
int day = pc.GetDayOfMonth(Convert.ToDateTime(o));
string PersianDateTime = String.Format("{2}/{1}/{0} ساعت{3}",
day.ToString(),
month.ToString(),
year.ToString(),
Convert.ToDateTime(o).ToShortTimeString());
return PersianDateTime;
}
catch
{
return String.Empty;
}
}
و به کد قبلی من هم یه نگاهی بنداز!

raziee
پنج شنبه 19 خرداد 1390, 09:16 صبح
به جای تمام ابن ها از خود Persian Calendar و Culture استفاده کنید.
تا اگه یه روزی قرار شد تاریخ به صورت میلادی یا هر نوع دیگه باشه به مشکل برنخورید.

nazanin-a
شنبه 13 تیر 1394, 16:40 عصر
به جای تمام ابن ها از خود Persian Calendar و Culture استفاده کنید.
تا اگه یه روزی قرار شد تاریخ به صورت میلادی یا هر نوع دیگه باشه به مشکل برنخورید.

میشه لطفا بیشتر توضیح بدین... من یه تازه کارم