PDA

View Full Version : نمایش تاریخ بصورت90/12/13 در گرید



sara_t
سه شنبه 29 فروردین 1391, 17:14 عصر
سلام دوستان عزیز
من یه تیبل دارم که تاریخ رو بصورت 901213 ذخیره میکنم اما حالا میخام اینو توی گرید نمایش بدم ولی بصورت90/12/13 باشه. اما هرکاری میکنم نمیشه. یه dll دانلود کردم و از طریق اون میتون خاصیت سل رو تغییر به maskedcolumn بدم و از خاصیت مسک استفاده کنم اما بشرطی که توی دیتابیسم هم بصورت 90/12/13 ذخیره بشه و اگر بیام و / بردارم و توی دیتابیس بصورت901213 بریزم زمانی که بخام تو گرید اونو ببینم بازم بصورت 901213هست.
آیا راهی داره که فقط برای نمایش 90/12/13 توی گرید باشه؟
ممنون

علیرضا حسن زاده
سه شنبه 29 فروردین 1391, 18:19 عصر
در قسمت Format سلول مورد نظر عبارت ##/##/## رو وارد کن

omid_csh
سه شنبه 29 فروردین 1391, 19:47 عصر
سلام
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs formatting)
{
if (formatting.ColumnIndex != 3)
return;

if (formatting.Value != null)
{
try
{
System.Text.StringBuilder dateString = new System.Text.StringBuilder();
string theDate = formatting.Value.ToString();

dateString.Append(theDate.Substring(0, 2));
dateString.Append("/");
dateString.Append(theDate.Substring(2, 2));
dateString.Append("/");
dateString.Append(theDate.Substring(4, 2));
formatting.Value = dateString.ToString();
formatting.FormattingApplied = true;
}
catch (FormatException)
{
// Set to false in case there are other handlers interested trying to
// format this DataGridViewCellFormattingEventArgs instance.
formatting.FormattingApplied = false;
}
}
مرجع http://stackoverflow.com/questions/8853276/c-sharp-custom-formatting-a-datagridview-columns-displayed-data-without-changin
موفق باشی.

sara_t
چهارشنبه 30 فروردین 1391, 10:00 صبح
بسیار ممنون از دوستان عزیز
من هرکاری کردم هر دو روش جواب ندادن روش اول که تنظیم فرمت بود اعمال نمیشه فکر کنم به دلیل فارسی بودن تاریخ هست ایا این درسته؟
روش دوم هم formatting رو نمیشناسه
ممنون میشم بیشتر راهنمایی بفرمایید.

omid_csh
چهارشنبه 30 فروردین 1391, 10:39 صبح
روش دوم هم formatting رو نمیشناسه
سلام
فقط کافیه:
public Form7()
{
InitializeComponent();

dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridVie w1_CellFormatting);
}
انجام بدی.
موفق باشی.

Mohsen229266
چهارشنبه 30 فروردین 1391, 10:50 صبح
سلام دوست عزیز تو این تایپیک (لینک تایپیک) (http://barnamenevis.org/showthread.php?177894-%D8%AF%DB%8C%D8%AA%D8%A7-%DA%AF%D8%B1%DB%8C%D8%AF-%D9%88%DB%8C%D9%88&p=801262&viewfull=1#post801262) یه نمونه برنامه هست مشکلتو حل میکنه

sara_t
چهارشنبه 30 فروردین 1391, 11:29 صبح
[QUOTE=omid_csh;1487562]سلام
فقط کافیه:
public Form7()
{
InitializeComponent();

dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridVie w1_CellFormatting);
}

ممنون دوست عزیز
اما باز فرمت رو نمیشناسه.

omid_csh
چهارشنبه 30 فروردین 1391, 11:53 صبح
سلام
یه نمونه برنامه برات میذارم

esiprogrammer
چهارشنبه 30 فروردین 1391, 14:22 عصر
سلام
یه نمونه برنامه برات میذارم
دلیل اینکه فرمتین /##/##/## رو قبول نمیکنه اینه که نوع فیلدت datetime نیست و نمیتونی فرمت Datetime بهش بدی.

اما چند راه داری یکیش همین کدی که دوستمون نوشته یعنی اینکه در event CellFormatting بیای و ستون مورد نظرت رو تغییر بدی مثل این

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1)
e.Value = e.Value.ToString().Insert(4, "/").Insert(7, "/");
}

این کد مثلا ستون 1 رو از فرمت 13900102 به 02/01/1390 تبدیل میکنه.
اما مشکل این روش اینه که سرعت رو کم میکنه یعنی اگه اطلاعاتت زیاد باشه ممکنه سرعتت بیاد پایین.

یک راه دیگه اینه که تو Query که مینویسی این مقدار رو بصورتی که میخوای برگردونی.
یعنی یک function توی Sql بنویسی و ستونت رو به اون فرمت تبدیل کنی.و توی خروجی query همون فرمتی رو برگردونی که میخوای. و اون رو به دیتاگریدت مستقیما بایند کنی.

البته شما اگه از wpf استفاده کنی. خیلی راحت میتونی یک converter برای ستونت بنویسی و اون رو به هر فرمتی که میخوای تبدیل کنی و مستقیما بایندش کنی.

sara_t
شنبه 02 اردیبهشت 1391, 12:26 عصر
با تشکر
من یه datatable دارم و از روش شما استفاده کردم و توی کوئری تاریخ رو عوض کردم اما چون توی همین دیتاتیبل سرچ و کارای دیگه هم انجام میدم درست عمل نمیکنه وبهم میریزه مجبورم از روش اخر که یه کانورتور هست استفاده کنم میشه بگید از کجا باید شروع کنم؟
ممنون