PDA

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



davidrobert
سه شنبه 26 خرداد 1394, 16:14 عصر
سلام خسته نباشید من میخوام تو دیتاگرید ویو وقتی تاریخ رو به این صورت انتخاب کردم شمسی رو
132326
در ستون دیگه دیتاگرید ویو بیاد میلادی این تاریخ رو برای من قرار بده در ستون دیگه دیتاگرید ویو.
132327
برای تاریخ انقضا کالا میخوام ممنون میشم بگید چطور کد رو بنویسم وقتی تاریخ شمسی در دیتاگرید ویو قرار گرفت تاریخ میلادی در سلول دیگه قرار بگیره. این کامپوننتی هستش که دارم برای دیتاگرید ویو استفاده میکنم.
http://uplod.ir/yu3x7ahr2y8v/AmirCalendar.dll.htm

خواهشن کمک کنید شدیداً نیاز به تیدیل تاریخ نیاز دارم.

Mahmoud Zaad
سه شنبه 26 خرداد 1394, 16:30 عصر
سلام
توی رویداد cellEndEdit برای ستونی که تاریخش فارسی هست کد بنویسید تا موقع خروج از این سلول معادل میلادیش در سلول مورد نظر نمایش داده بشه.
if (e.RowIndex != -1 && e.ColumnIndex == shamsi.Index)
{
dataGridView1.Rows[e.RowIndex].Cells["miladi"].Value.ToString() = ConvertToMiladi(dataGridView1.Rows[e.RowIndex].Cells["shamsi"].Value.ToString());
}
فرض کنید یه ستون داریم به اسم shamsi یه ستون هم به اسم miladi و یه تابع که عملیات تبدیل تاریخ رو انجام میده به اسم ConvertToMiladi

davidrobert
سه شنبه 26 خرداد 1394, 16:44 عصر
ببخشید سورسی بای این کامپوننت
132329
برای تغییر تاریخ شمسی به میلادی میتونید برای بنده قرار بدید با دیتاگرید ویو ممنون میشم وقتی تاریخ شمسی رو انتخاب کردم تاریخ میلادی در سلول بعدی قرار بگیره ممنون میشم.

علی فتحی
سه شنبه 26 خرداد 1394, 17:36 عصر
تبدیل تاریخ شمسی به میلادی"

public static DateTime ToMiladi(this DateTime dt) {


PersianCalendar pc = new PersianCalendar();
return pc.ToDateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0, 0);


}


private void maskedTextBoxAdv1_TextChanged(object sender, EventArgs e)
{
try
{
DateTime Shamsi = Convert.ToDateTime(maskedTextBoxAdv1.Text);
maskedTextBoxAdv2.Text = ToMiladi(Shamsi).ToShortDateString();
}
catch (Exception)
{
}

علی فتحی
سه شنبه 26 خرداد 1394, 17:38 عصر
با این کد هم میشه اعمال کرد

foreach (DataGridViewRow row in dataGridView1.Rows){
try
{
int a = Convert.ToInt32(row.Cells[0].Value);
int b = Convert.ToInt32(row.Cells[1].Value);
row.Cells[2].Value = b - a;
}
catch (FormatException fex)
{
row.Cells[2].Value = "مقادير سلولها بايد عدد باشد";
}

davidrobert
سه شنبه 26 خرداد 1394, 19:04 عصر
سلام مهندس جان خوبید جواب نگرفتم
امکانش هستش با این کامپوننت تاریخ شمسی با دیتاگرید ویو برای من درست کنید کامپونتش این هستش http://uplod.ir/yu3x7ahr2y8v/AmirCalendar.dll.htm با دیتاگرید ویو بیاد تاریخ شمسی انتخاب شد همون جا در سلول دیگه تاریخ میلادی قرار بگیره ممنون میشم.

Mahmoud Zaad
سه شنبه 26 خرداد 1394, 19:16 عصر
ببینید اصلاً کامپوننت مهم نیست، در نهایت توی سلول دیتاگریدویو یه Value وجود داره، شما اسم ستونی که توش تاریخ فارسی رو نشون میدید رو به جای shamsi و اسم ستونی که توش میخواید تاریخ میلادی رو نشون بدید به جای miladi جایگذاری کنید. یه تابع هم میخوایم که تبدیل تاریخ از شمسی به میلادی رو انجام بده که دوستمون کدشو گذاشته حالا اگه خود اون کامپوننت این تبدیل رو انجام بده که چه بهتر. نهایتاً شما کد بنده رو در رویداد CellEndEdit دیتاگریدویویی که دارید باهاش کار می کنید قرار بدید.

davidrobert
سه شنبه 26 خرداد 1394, 19:43 عصر
مهندس جان کد شما رو نوشتم ولی جواب نگرفتم.

davidrobert
شنبه 30 خرداد 1394, 16:21 عصر
ممنون از دوستان من جواب گرفتم به وسیله استاد بزرگ آقا خوخان
http://uplod.ir/tdtk1qe8f349/DGV_DTp.7z.htm
این هم سورسش