PDA

View Full Version : ShamsiDateValidator - کامپوننتی برای بررسی صحت تاریخ شمسی در ASP.NET



alireza_s_84
سه شنبه 11 خرداد 1389, 21:46 عصر
خیلی وقت پیش جناب راد کامپوننتی در این تاپیک http://barnamenevis.org/forum/showthread.php?t=133560 ارائه کرد که کار بررسی تاریخ شمسی رو انجام میداد. من تا دیروز اصلا از این کامپوننت استفاده نکرده بودم تا اینکه یکی از دوستان تاپیکی زد و عنوان نمود با استفاده از این کامپوننت مشکل داره. من وقتی چک کردم متوجه ایرادات کوچکی توی این کامپوننت شدم. که توی همون تاپیک توضیح دادم. فکر کردم یه سری قابلیت ها رو هم بهش اضافه کنم و در کل این کامپوننت رو بهینه کنم.
با اجازه جناب راد این کامپوننت رو که الهام گرفته از کار خود ایشان هست در اختیار دوستان میذارم.
نکته: تا زمانیکه اجازه کتبی و ثبتی جناب راد داده نشه سورس این کامپوننت رو در اختیار کسی نمیذارم.
توجه: اگر قرار شد سورس کامپوننت قرار داده بشه در این تاپیک (http://barnamenevis.org/forum/showthread.php?t=223289) آموزش کامل ساخت کامپوننت رو به هر دو زبان C#‎‎‎‎‎ و VB.net قرار خواهم داد.

مشخصات این کامپوننت:
زبان توسعه: C#‎‎‎‎‎
هدف: اعتبارسنجی تاریخ شمسی
حجم: 20.0 کیلوبایت

چند نکته پیرامون این کنترل:
1) استفاده از این کنترل دقیقاً همانند کنترل های Validation در ASP.NET هست.
2) این کنترل، بررسی رو در دو سطح کلاینت و سرور انجام میده.
3) خصوصیات این کامپوننت:
ValidateEmptyText: اگر True باشه فیلدهای خالی رو هم اعتبار سنجی میکنه.
AcceptWithoutZero: این خاصیت تعیین میکنه که آیا روز و ماه میتونه تک رقمی باشه یا نه (89/03/11 <> 89/3/11)
DateFormat: فرمت تاریخ که ابتدا سال باشد یا روز (yyyy/MM/dd <> dd/MM/yyyy)
FixedYearPart: قسمت ثابت سال برای زمانیکه خاصیت IsTowDigitYear برابر True باشه. با این قابلیت میتونید تعیین کنید که قسمت ثابت سال مثلا 13 یا 14 باشه و تاریخ 89 خود به خود به تاریخ 1389 تغییر داده میشه این خصوصیت فقط زمانی عمل میکنه که خصوصیت IsTowDigitYear برابر True باشه.
FixedYearPart: دو عدد ثابت سمت چپ سال
IsTowDigitYear: دریافت سال بصورت دو رقمی است
MinYearAccept: حداقل سال ورودی قابل قبول
MaxYearAccept: حداکثر سال ورودی قابل قبول
RtlValidationMode: این خصوصیت سه مقدار میگیره: (None - All - OnlyIE) که جهت اعمال نوع اعتبارسنجی راست به چپ هست و در این تاپیک (http://barnamenevis.org/forum/showthread.php?t=225141) در موردش بحث شده میتونید پیگیر باشید.
با دو خصوصیت آخری امکان اعتبارسنجی تاریخ از 1/1/1 تا الی ماشاا... امکانپذیره و محدودیتی ندارید(هدف آموزش این بود که چطور میشه به دارز مدت فکر کرد.)
بنابراین زمانیکه وارد سال 1400 شدیم میتونیم با تعیین خصوصیت FixedYearPart بصورت 14 سال های ورودی 87 رو به 1487 تبدیل کنیم.
4)کامپوننت با بررسی قابیلت Partial Rendering Page اقدام به رجیستر کردن خودش میکنه لذا با آپدیت پانل نباید مشکلی داشته باشه.
5) این کنترل، بررسی سال کبیسه رو هم انجام میده.
دوستان عزیز کسانی که از کامپوننت استفاده میکنن شرعا ، اخلاقا و حقوقا موظف به درج نظر هستند(نگفتم تشکر ) تا انشا... با این کامپوننت مشکلی برای اعتبارسنجی تاریخ شمسی نباشه و دیگه شاهد نباشیم بعد 1 سال زحمت آقای راد تاپیکی زده بشه که کامپوننت ایراد داره(بی شک اگر دوستانی که استفاده کرده بودند نظر میدادن این وضعیت پیش نمیومد.)

Modifier
چهارشنبه 12 خرداد 1389, 12:23 عصر
سلام

صحت هیچ تاریخی رو تایید نمیکنه !!!
چه تاریخی رو وارد کنم تا صحیح باشه ...

فرض کنید هیچ تغییری توی تنظیماتش ندادم...چی واردکنم ؟

ممنون.

در ضمن جای تاپیک رو ببرید توی تالار asp.net...

Modifier
پنج شنبه 13 خرداد 1389, 15:25 عصر
دوستان عزیز کسانی که از کامپوننت استفاده میکنن شرعا ، اخلاقا و حقوقا موظف به درج نظر هستند(نگفتم تشکر ) تا انشا... با این کامپوننت مشکلی برای اعتبارسنجی تاریخ شمسی نباشه و دیگه شاهد نباشیم بعد 1 سال زحمت آقای راد تاپیکی زده بشه که کامپوننت ایراد داره(بی شک اگر دوستانی که استفاده کرده بودند نظر میدادن این وضعیت پیش نمیومد.)

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

alireza_s_84
پنج شنبه 13 خرداد 1389, 20:15 عصر
صحت هیچ تاریخی رو تایید نمیکنه !!!
چه تاریخی رو وارد کنم تا صحیح باشه ...
فرض کنید هیچ تغییری توی تنظیماتش ندادم...چی واردکنم ؟
سلام دوست عزیز:
کامپوننت ایراد جزئی داشت که برطرف شد میتونید از پست اصلی برداشت کنید و مثال هم در همین پست قرار دادم.

در ضمن جای تاپیک رو ببرید توی تالار ASP.NET...
خب اینکار رو مدیران باید انجام بدن از عهده من خارجه.

من مشکلمو گفتم... کسی نیست جواب بده ... لطفا درستش کنید..
ببخشید دیر شد بهر حال مشغله کاری نمیذاره آدم تمام وقت به فکر رفع ایراد باشه مرسی از نظر دهی تون.
نمونه برای کار با کامپوننت:

faridsmart
چهارشنبه 15 آبان 1392, 08:46 صبح
من از این 2 کلاس برای اعتبار سنجی تاریخ شمسی استفاده می کنم ، می تونید دانلود کنید و ازش استفاده کنید
1_ کلاس ValidationPersianDate برای اعتبار سنجی تاریخ شمسی است ، همچنین شامل توابع اضافی دیگر برای چک کردن یک تاریخ با تاریخ دیگر مثلا بررسی اینکه تاریخ وارد شده از تاریخ مشخصی کمتر یا بیشتر نباشد .
2_ کلاس conversion برای به دست اوردن تاریخ شمسی امرور و مقایسه آن با تاریخ وارد شده توسط کاربر است این کلاس شامل توابع اضافی برای به دست آوردن تاریخ شمسی، سال شمسی، ماه شمسی، تبدیل عدد به حروف و... نیز می باشد
این دو کلاس تحت win #c نوشته شده اما می تونید با تغییر دادن رفرنس های اون به وب ازش در asp.net با code behind #c نیز استفاده کنید_ :)

ClaimAlireza
دوشنبه 26 خرداد 1393, 09:02 صبح
با سلام...

آقا علیرضا مشکلی که این ولیدیتور داره اینه که نمیتوان از آن در یک TemplateField گرید جهت ویرایش استفاده کرد.

لطفا در صورت امکان این مشکل را پیگیری کنید.

MoslemMaleki
جمعه 28 اسفند 1394, 05:38 صبح
دوست عزیز فرومول بمب هسته ای که نمیخوای بزاری همش بیست خط نیست. واقعاً خوب نیست. آدم تو این انجمن باید سورس بزاره والا کامپونت ریخته.