PDA

View Full Version : تبدیل تاریخ قبل از bind کردن



saffari2005
سه شنبه 27 اردیبهشت 1384, 10:37 صبح
سلام
در اطلاعاتی که از data base میگیرم فیلد تاریخ به فرم میلادی است . dataset پر می شود و به datafrid , بایند می شود .چه طوری می تونم فرمت نمایش رو قبل از بایند کردن به شمسی تبدیل کنم؟( کلاس مربوط به تبدیل تاریخ رو دارم )

Behrouz_Rad
سه شنبه 27 اردیبهشت 1384, 12:43 عصر
اولا سعی کنید در همان موقع قرار دادن تاریخ در دیتابیس، آن را به تاریخ میلادی تبدیل کنید. در غیر اینصورت، تبدیل تاریخ در حین عمل Bind، مقداری از زمان را تلف می کند.

به هر حال...
یک TemplateColumn ایجاد کنید و مقدار خوانده شده از ستون مورد نظر در دیتابیس را که حاوی فیلد تاریخ است، به وسیله تابع خود به فرمت شمسی تبدیل کنید:


<Columns>
<asp:BoundColumn
DataField="anotherField" />

<asp:TemplateColumn>
<itemTemplate>
<table>
<tr>
<td>Shamsi Date:</td>
<td><%# ChangeToShamsi (Container.DataItem( "myDateField" )) %></td>
</tr>
</table>
</itemTemplate>
</asp:TemplateColumn>
</Columns>

saffari2005
سه شنبه 27 اردیبهشت 1384, 13:10 عصر
ممنون از راهنماییتون!
شما از تابع js برای این کار استفاده کردین اما من با توابع #C کار می کنم. در اون صورت جطوری میشه این کار رو کرد؟

Behrouz_Rad
سه شنبه 27 اردیبهشت 1384, 14:05 عصر
شما از تابع js برای این کار استفاده کردین
خیر! تابع ChangeToShamsi یک تابع Server Side است.
امکان فراخوانی توابع Java Script یا به صورت کلی تر Client Side، در Code Behind وجود ندارد.

saffari2005
چهارشنبه 28 اردیبهشت 1384, 11:05 صبح
من به صورت زیر کار می کنم . میشه بگین کجا تابع تبدیل رو قرار بدم ؟!

<ItemTemplate>
<asp:Label id="Label4" runat="server" Text = '<%# DataBinder.Eval(Container, DataItem.Date") %>'>
</asp:Label>
</ItemTemplate>

Behrouz_Rad
چهارشنبه 28 اردیبهشت 1384, 18:13 عصر
1) نیازی به کنترل Label ندارید.
2) سینتکس DataBinder.Eval اشتباه است.
3) به جای


'<%# DataBinder.Eval(Container.DataItem, "myDateField"") %>'

بنویسید:


'<%# ChangeToShamsi (Container.DataItem( "myDateField" )) %>'

saffari2005
پنج شنبه 29 اردیبهشت 1384, 07:59 صبح
ممنون ولی جواب نمیده ! :(