PDA

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



amir_T_2008
پنج شنبه 15 خرداد 1393, 16:19 عصر
سلام دوستان

من از persia.dll استفاده کردم و تاریخ جاری بدون مشکل قرار میده اما مشکل من اینه که من میخوام تو formview یا gridview که اطلاعات نمایش پیدا میکنه تاریخ به صورت شمسی نمایش داده بشه اما وقتی در code به طور مثال وقتی در کد زیر :


if (!IsPostBack)
{
Persia.SunDate sunDate = Persia.Calendar.ConvertToPersian(DateTime.Now);

Label10.Text = sunDate.Weekday;
}

میگم label10 میگه این لیبل وجود نداره در صورتی که در فرم ویو و گرید ویو هست .

ممنون میشم راهنمایی کنید چون من تازه کارم و زیاد حرفه ای نیستم

ممنونم

salar IT man
پنج شنبه 15 خرداد 1393, 16:43 عصر
سلام .خب شما باید با استفاده از متد FindCotrols این لیبل رو از داخل پدرش بکشی بیرون.پدرش همون GridView یا FormView هست که استفاده میکنی.

http://stackoverflow.com/questions/6873973/how-to-find-control-in-templatefield-of-gridview

amir_T_2008
پنج شنبه 15 خرداد 1393, 17:27 عصر
ممنون

الان یعنی برای dridview1 که یک حدودا 10 تا label دارم باید چطوری بنویسم که در page load بتونم label10 فراخوانی کنم؟؟

salar IT man
پنج شنبه 15 خرداد 1393, 17:51 عصر
ممنون

الان یعنی برای dridview1 که یک حدودا 10 تا label دارم باید چطوری بنویسم که در page load بتونم label10 فراخوانی کنم؟؟

داخل تابع FindControl اسم اون لیبل 10 رو بیارین حله . در ضمن یه سرچ هم بزنید در این موزد که خیلی سمپل هستش بهتون کمک زیادی میکنند. موفق باشید دوست عزیز

amir_T_2008
پنج شنبه 15 خرداد 1393, 18:32 عصر
داخل تابع FindControl اسم اون لیبل 10 رو بیارین حله . در ضمن یه سرچ هم بزنید در این موزد که خیلی سمپل هستش بهتون کمک زیادی میکنند. موفق باشید دوست عزیز

خیلی ممنون اون مشکل حل شد اما مشکل جدید اینه که من با کد پایین راحت تاریخ جاری سیستم به شمسی تبدیل میکنم
protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{

Persia.SunDate sunDate = Persia.Calendar.ConvertToPersian(DateTime.Now);


Label7.Text = sunDate.Weekday;
}

اما حالا که میخوام بگم تاریخ دیتابیس به تاریخ شمسی تبدیل کن انجام نمیشه
این کد formview1:

&nbsp; <b>-&nbsp; تاريخ درج خبر : </b>
<asp:Label ID="Label4" runat="server" Text='<%# Eval("NewsDate", "{0:G}") %>'></asp:Label>

و این کدی که میخوام تغییر بده :

if (!IsPostBack)
{
Label Label4 = (Label)this.FormView1.FindControl("Label4");
Persia.SunDate sunDate = Persia.Calendar.ConvertToPersian(DateTime.Now);

Label4.Text = sunDate.Weekday;

}

salar IT man
پنج شنبه 15 خرداد 1393, 22:00 عصر
شما میتونید تابعی که کار تبدیل تاریخ رو انجام میدرو تو همون قسمت html بیارید. به این شکل:


Text='<%# ChangeFunc((DateTime)Eval("NewsDate", "{0:G}")).ToString() %>'


یه پکیج تو NuGet هست با نام PersianDateTime در واقع فارسی شده DateTime از اونم میتونید استفاده کنید

amir_T_2008
جمعه 16 خرداد 1393, 09:47 صبح
من از طریق کد زیر موفق شدم در formview تاریخ از میلادی به شمسی تبدیل کنم



if (FormView1.Row == null) return;
Label lbl = (Label)FormView1.Row.Cells[0].FindControl("Label4");
var mlddate=DateTime.Parse(lbl.Text);
var psDate = string.Format("{0}/{1}/{2} {3}:{4}", _pc.GetYear(mlddate), _pc.GetMonth(mlddate), _pc.GetDayOfMonth(mlddate),mlddate.Hour,mlddate.Mi nute);
lbl.Text = psDate;


اما وقتی از این کد میخوام در datalist یا gridview استفاده کنم از row ایراد میگیره ممنون میشم این کد برای datalist و gridview تغییر بدید


بسیار ممنونم

amir_T_2008
شنبه 17 خرداد 1393, 16:39 عصر
دوستان کسی نمیتونه کمک بکنه؟؟؟؟

ممنون میشم اگر میتونید کمک کنید