rezazd
2008/2/17, 08:06 AM
همتنطور که میدانید دات نت 2 از تاریخ شمسی پشتیبانی میکند به مثال زبر توجه کنید
protectedvoid Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if ( e.Item.FindControl("RPLabel1") != null)
{
TMPDT = Convert.ToDateTime(((Label)e.Item.FindControl("RPLabel1")).Text);
((Label)e.Item.FindControl("RPLabel1")).Text = mpd.ShowPerianDate(TMPDT ,true,true,"/" ) ;
}
}
}
.
.
.
<tddir="rtl"width="120">
<asp:Labelid="RPLabel1"Text='<%#DataBinder.Eval(Container.DataItem, "News_DateTime")%>'Runat="server"/>
</td>
در کد سی شارپ بالا من یک لیبیل را که داخل ریپیتور تعریف کرده بودم هنگام نمایش روی صفحه وب فارسی میکنم در اخر هم یک تکه کد در فایل جداگانه نوشتم که برای من عمل فارسی سازی را انجام میدهد یک تکنیک جالب مهم پیدا کردن و تغییر دادن یک کنترا داخل صفحه در حال رندر شدن است
این یک مثال تکنیکی است فقط برای ایده دادن حتما عزیزان کد های قشنگ تر و بهینه تر می نویسند
publicclassMyPerDate
{
string[] montname = newstring[12] { "ه©ي©§یë", "ں©§ی ى¬¢", "¦©§ں§", "¢ï©", "ê©§ں§", "¬ى©ïي©", "êى©", "™ ںë", "™¨©", "§ی", " ىêë", "ں«هë§" };
string[] weekname = newstring[7] { "ïک¬ë ى", "§ي¬ë ى", "«ى ¬ë ى", "چىں©¬ë ى", "پë¤ ¬ë ى", "¤êمى", "¬ë ى" };
publicstring ShowPerianDate(DateTime Dt, bool mstr, bool westr, string sprator)
{
string s="";
PersianCalendar jc = newPersianCalendar();
if (westr)
s = weekname[Convert.ToInt16(Enum.Parse(typeof(DayOfWeek), Dt.DayOfWeek.ToString()))]+" " ;
s += jc.GetDayOfMonth(Dt).ToString() +sprator;
if (mstr)
s += montname[jc.GetMonth(Dt)-1] + sprator ;
else
s += jc.GetMonth(Dt).ToString() + sprator;
s += jc.GetYear(Dt).ToString();
return s;
}
}
نمی دونم چرا بهم ربخته نشان داده شده ! بهر جهت نام فارسی ماهها و روز های هفته را اول کار تعریف کردم
protectedvoid Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if ( e.Item.FindControl("RPLabel1") != null)
{
TMPDT = Convert.ToDateTime(((Label)e.Item.FindControl("RPLabel1")).Text);
((Label)e.Item.FindControl("RPLabel1")).Text = mpd.ShowPerianDate(TMPDT ,true,true,"/" ) ;
}
}
}
.
.
.
<tddir="rtl"width="120">
<asp:Labelid="RPLabel1"Text='<%#DataBinder.Eval(Container.DataItem, "News_DateTime")%>'Runat="server"/>
</td>
در کد سی شارپ بالا من یک لیبیل را که داخل ریپیتور تعریف کرده بودم هنگام نمایش روی صفحه وب فارسی میکنم در اخر هم یک تکه کد در فایل جداگانه نوشتم که برای من عمل فارسی سازی را انجام میدهد یک تکنیک جالب مهم پیدا کردن و تغییر دادن یک کنترا داخل صفحه در حال رندر شدن است
این یک مثال تکنیکی است فقط برای ایده دادن حتما عزیزان کد های قشنگ تر و بهینه تر می نویسند
publicclassMyPerDate
{
string[] montname = newstring[12] { "ه©ي©§یë", "ں©§ی ى¬¢", "¦©§ں§", "¢ï©", "ê©§ں§", "¬ى©ïي©", "êى©", "™ ںë", "™¨©", "§ی", " ىêë", "ں«هë§" };
string[] weekname = newstring[7] { "ïک¬ë ى", "§ي¬ë ى", "«ى ¬ë ى", "چىں©¬ë ى", "پë¤ ¬ë ى", "¤êمى", "¬ë ى" };
publicstring ShowPerianDate(DateTime Dt, bool mstr, bool westr, string sprator)
{
string s="";
PersianCalendar jc = newPersianCalendar();
if (westr)
s = weekname[Convert.ToInt16(Enum.Parse(typeof(DayOfWeek), Dt.DayOfWeek.ToString()))]+" " ;
s += jc.GetDayOfMonth(Dt).ToString() +sprator;
if (mstr)
s += montname[jc.GetMonth(Dt)-1] + sprator ;
else
s += jc.GetMonth(Dt).ToString() + sprator;
s += jc.GetYear(Dt).ToString();
return s;
}
}
نمی دونم چرا بهم ربخته نشان داده شده ! بهر جهت نام فارسی ماهها و روز های هفته را اول کار تعریف کردم