کار نکردن Custom Control انتخابگر تاریخ شمسی در حالت Master Page
سلام
من برای استفاده از یک تقویم فارسی از این کامپوننت استفاده کردم، مشکل وقتی پیش میاد که از Master Page استفاده میکنم. وقتی که از یک صفحه معمولی استفاده میشه، هیچ مشکلی نداره.
این کامپوننت با JavaScript نوشته شده.
دوستان اگه راه حلی به ذهن شون میرسه دریغ نکنن.
1 ضمیمه
نقل قول: کار نکردن یک Custom Control در حالت Master Page
وقتی یک کنترل در Master Page قرار میگیره ID اش عوض میشه. برای اینکه اسکریپت فوق و دیگر اسکریپت های نیازمند به ID کنترل مقصد درست کار کنند میبایست از مشخصه ClientID به جای ID استفاده کنید.
من به پروژه مثال خودش یک Master Page اضافه کردم و کنترل فوق را در Master Page قرار دادم. در DefaultContentPage.aspx به خوبی و بدون مشکل کار میکنه (ضمیمه را ببینید).
نقل قول: کار نکردن یک Custom Control در حالت Master Page
خدا شدیدا هر چی میخاید بهتون بده چون من دقیقا همین مشکلو داشتم و خیلی هم دنبال راه حلش گشتم اما ...
نقل قول: کار نکردن یک Custom Control در حالت Master Page
نقل قول:
نوشته شده توسط
DelphiAssistant
وقتی یک کنترل در Master Page قرار میگیره ID اش عوض میشه. برای اینکه اسکریپت فوق و دیگر اسکریپت های نیازمند به ID کنترل مقصد درست کار کنند میبایست از مشخصه ClientID به جای ID استفاده کنید.
من به پروژه مثال خودش یک Master Page اضافه کردم و کنترل فوق را در Master Page قرار دادم. در DefaultContentPage.aspx به خوبی و بدون مشکل کار میکنه (ضمیمه را ببینید).
برنامه نمونه شما رو تست کردم دیدم جواب نداد!! واسه همین رفتم تو IE تستش کردم و دیدم کار میکنه. البته در IE کد خودم هم کار کرد.
شما از چی استفاده کردین؟ فایرفاکس؟
روشی داره که این کد تو فایر فاکس کار کنه؟
مرسی.
1 ضمیمه
نقل قول: کار نکردن یک Custom Control در حالت Master Page
اتفاق عجیبی که هنگام قرار دادن این کنترل در Master Page میافته اینه که مقدار مشخصه name با مقدار مشخصه id متفاوت است:
<input id="ctl00_PersianDatePickup2" type="text" name="ctl00$PersianDatePickup2" value="[کلیک کنید]" onclick="displayDatePicker('ctl00_PersianDatePicku p2');"/>
این قضیه ظاهرا در IE مشکلی ایجاد نمی کنه، اما در فایرفاکس ایجاد مشکل میکنه.
دلیل مشکل هم اینه که جستجو بر اساس نام کنترل انجام میشه و کنترلی با نام ctl00_PersianDatePickup2 در صفحه پیدا نمیشه، چون نام این کنترل بر اساس اتفاق فوق به ctl00$PersianDatePickup2 تبدیل شده است، بنابراین جستجو بی نتیجه می مونه.
برای رفع مشکل در فایل JsFarsiCalendar.js خط شماره 26 که به این شکل است:
var targetDateField = document.getElementsByName (dateFieldName).item(0);
را به شکل زیر تغییر دهید:
var targetDateField = document.getElementById (dateFieldName);
بدین ترتیب از این ببعد جستجو بر اساس ID کنترل انجام میشه و در هر دو Browser درست کار خواهد کرد.
فایل اصلاح شده را ضمیمه کردم. پروژه ضمیمه شده با Visual Studio 2008 ساخته شده و درست کار میکنه.
ماه رمضان است، دعا برای قبولی طاعات و عبادات فراموش نشود. :چشمک: