تا چندی پیش به شکل خیلی ریز به بررسی و استفاده از کنترلهای Microsoft ASP.net Ajax Control Toolkit نپرداخته بودم ، این پروژه جدید باعث شد تا اندکی توجه به این کامپوننت Open Source داشته باشم ، در نگاه اول مجموعه ای است خوب و کاربردی برای برنامه نویسان دات نت که می تواند امکانات جالبی به برنامه های تحت وب شما بدهد ، اما این پروژه Ajax Control Toolkit مشکلاتی نیز دارد که یکی از آنها که بنده جدیدا به آن برخورده ام مشکل عدم داشتن تنظیمات کافی برای کنترل ها است ، نبود این تنظیمات بیشتر موقعی احساس میشود که شما یک برنامه نویسی باشید که بخواهید از یک زبان راست به چپ به عنوان زبان برنامه تحت وب خوداستفاده کنید .
بنده این مشکل را در دو کنترل ValidatorCalloutExtender و NumericUpDownExtender به وضوح دیدم . سعی می کنم مشکلات را با طرح مثال هائی بیان کنم .
اولین مشکل در مورد اندازه بالنی است که بوسیله کنترل ValidatorCalloutExtender جهت نمایش پیغام ظاهر می شود ، اندازه این کنترل یک اندازه ثابت است و قابل تغییر توسط شما نمی باشد ، بنده این مورد را در فوروم سایت ASP.net بسیار جستجو کردم و متاسفانه اعلام شده بود که این تنظیمات به صورت Hard Code هستند و در صورت تمایل باید Source پروژه Microsot ASP.net Ajax را دانلود کرده و در فایل های js مربوط به هر کنترل تنظیماتی که بصورت Hard Code هستند را تغییر دهید و سپس فایل های dll جدید را به پروژه خود اضافه نمائید ، در صورتیکه سری به این کدها بزنید و برای نمونه برای حل مشکل طول و عرض بالن پیغامی که بوسیله Validator Callout Extender ظاهر میشود میبایستی فایل ValidatorCalloutBehavior.js که در شاخه ValidatorCallout پروژه AjaxControlToolkit می باشد را توسط ویرایشگر Visual Studio.net باز کرده و بخش زیر را تغییر دهید :
this._width = “250px”;
مشکل فوق زیاد مرتبط با زبان فارسی نیست ولی مشکل زیر که برای آن حتی از طریق دستکاری در فایل های js هم فعلا راه حلی پیدا نکرده ام تنها برای زبان های راست به چپ است .
محل نمایش این بالن همیشه سمت راست TextBox است ! و در زبان های راست به چپ که عنوان سمت راست TextBox قرار میگیرد (برعکس زبان ltr که سمت چپ است) مشکل عدم زیبائی به وجود می آید ، در واقع سمت چپ TextBox در زبان های ltr انتها محسوب می شود و بالن بر این اساس قرار میگیرد در حالیکه انتهای TextBox در زبان های rtl سمت راست هست . یک نمونه را در زیر می توانید مشاهده کنید :
![]()
در همین تصویر بالا اگر توجه کنید اندک تغییراتی هم در فونت می توانید مشاهده کنید ، که آن هم بوسیه همین تغییر در کدها صورت گرفته ، البته این یک مورد را می تونستیم از طریق بازی با css انجام دهیم ، به این صورت که یک تگ div و یا span بیرون تگ تعریف کنترل بزاریم و با css فونت را عوض کنیم ولی چون برای من این تغییر میبایستی در تمام سطح پروژه اعمال می شد ترجیح دادم که این را هم به وسیله Hard Code اعمال کنم.
البته تغییر در Hard Code هم همچین چیز خوبی نیست ولی وقتی تنها گزینه پیش روی شما همین گزینه باشد چاره ای جز این ندارید ، فکر کنید که برای بروز کردن مجموعه کنترل های Ajax Control Toolkit مجبور باشید که تغییرات را دوباره بر روی پروژه جدیدی که از سایت CodePlex دانلود کرده اید اعمال کنید.
مشکل نمایش بالن در سمت راست یک TextBox در کنترل NumericUpDownExtender هم قابل مشاهده است ، بدین معنا که آیکون های فلش بالا و پائین نیز به مانند بالن در سمت راست هستند .
تا اینجای کار تنها چیزی که در رابطه با rtl , ltr مشکلی نداشته ReorderList است ، البته ReorderList برای خودش کلی مشکل داشته و داره و خواهد داشت ، اما کنترل فوق العاده کارآمدی است .
برچسبها: آموزش, ای اس پی, برنامه نویسی, دات نت