TrollWarrior
چهارشنبه 19 خرداد 1389, 20:06 عصر
سلام برای یه برنامه (win app) می خواستم برای کار کردن با تاریخ یه کامپوننت یا همچین چیزی بنویسم که :
1- تاریخ و بصورت شمسی نشان بده و دریافت کنه یعنی به صورت string
2- ولی تاریخ رو تو دیتابیس به صورت میلادی ثبت و دریافت کنه یعنی به صورت DateTime
برای همین این کلاسو نوشتم
class pDateTextBox : TextBox
{
public override string Text
{
get
{
return base.Text;
}
set
{
mildaiDate = shamsitomiladi(value);
}
}
public DateTime mildaiDate
{
get
{
try
{
return shamsitomiladi(base.Text);
}
catch
{
return DateTime.Today;
}
}
set
{
base.Text = getshamsi(value);
}
}
private string getshamsi(DateTime tarikhmiladi)
{
string ShamsiDate = "";
PersianCalendar iraniCalender = new PersianCalendar();
ShamsiDate = iraniCalender.GetYear(tarikhmiladi) + "/";
if (iraniCalender.GetMonth(tarikhmiladi).ToString().L ength == 1) { ShamsiDate = ShamsiDate + "0"; }
ShamsiDate = ShamsiDate + iraniCalender.GetMonth(tarikhmiladi) + "/";
if (iraniCalender.GetDayOfMonth(tarikhmiladi).ToStrin g().Length == 1) { ShamsiDate = ShamsiDate + "0"; }
ShamsiDate = ShamsiDate + iraniCalender.GetDayOfMonth(tarikhmiladi);
return ShamsiDate;
}
private DateTime shamsitomiladi(string tarikhshamsi)
{
PersianCalendar iraniCalender = new PersianCalendar();
string[] _his = tarikhshamsi.Split('/');
return iraniCalender.ToDateTime(int.Parse(_his[0]), int.Parse(_his[1]), int.Parse(_his[2]), 0, 0, 0, 0);
}
}حالا مشکلم اینه وقتی تو یه فرم ازش استفاده میکنم وproperty miladidateبه یه فیلد از دیتاست ام bind میکنم بدون اینکه تغییری بهش بدم باعث میشه همیشه
dataset.HasChanges() برابر true شه :عصبانی++:
بالا غیرتا ایندفه جواب بدید:گریه:
1- تاریخ و بصورت شمسی نشان بده و دریافت کنه یعنی به صورت string
2- ولی تاریخ رو تو دیتابیس به صورت میلادی ثبت و دریافت کنه یعنی به صورت DateTime
برای همین این کلاسو نوشتم
class pDateTextBox : TextBox
{
public override string Text
{
get
{
return base.Text;
}
set
{
mildaiDate = shamsitomiladi(value);
}
}
public DateTime mildaiDate
{
get
{
try
{
return shamsitomiladi(base.Text);
}
catch
{
return DateTime.Today;
}
}
set
{
base.Text = getshamsi(value);
}
}
private string getshamsi(DateTime tarikhmiladi)
{
string ShamsiDate = "";
PersianCalendar iraniCalender = new PersianCalendar();
ShamsiDate = iraniCalender.GetYear(tarikhmiladi) + "/";
if (iraniCalender.GetMonth(tarikhmiladi).ToString().L ength == 1) { ShamsiDate = ShamsiDate + "0"; }
ShamsiDate = ShamsiDate + iraniCalender.GetMonth(tarikhmiladi) + "/";
if (iraniCalender.GetDayOfMonth(tarikhmiladi).ToStrin g().Length == 1) { ShamsiDate = ShamsiDate + "0"; }
ShamsiDate = ShamsiDate + iraniCalender.GetDayOfMonth(tarikhmiladi);
return ShamsiDate;
}
private DateTime shamsitomiladi(string tarikhshamsi)
{
PersianCalendar iraniCalender = new PersianCalendar();
string[] _his = tarikhshamsi.Split('/');
return iraniCalender.ToDateTime(int.Parse(_his[0]), int.Parse(_his[1]), int.Parse(_his[2]), 0, 0, 0, 0);
}
}حالا مشکلم اینه وقتی تو یه فرم ازش استفاده میکنم وproperty miladidateبه یه فیلد از دیتاست ام bind میکنم بدون اینکه تغییری بهش بدم باعث میشه همیشه
dataset.HasChanges() برابر true شه :عصبانی++:
بالا غیرتا ایندفه جواب بدید:گریه: