من دارم یک کامپوزیت کنترل می نویسم که می خوام یک Script رو بعد از تگ <Form/> رجیستر کنم.
ممکنه راهنمایی کنید؟
با RegisterStartupScript دقیقن قبل از تگ رجیستر میشه.
چطور میتونم بعد از تگ رجیستر کنم؟
Printable View
من دارم یک کامپوزیت کنترل می نویسم که می خوام یک Script رو بعد از تگ <Form/> رجیستر کنم.
ممکنه راهنمایی کنید؟
با RegisterStartupScript دقیقن قبل از تگ رجیستر میشه.
چطور میتونم بعد از تگ رجیستر کنم؟
از RegisterClientScriptBlock استفاده کنید، ضمنا این متد hidden است و توی لیست member های page نخواهید دیدش.
روش قبل کد رو بعد از محل ViewState در بالای صفحه و داخل فرم رجیستر می کنه . شما به طور عادی راهی برای بیرون رفتن از تگ فرم ندارید. مشکلتون چیه؟ شاید راه حل بهتری وجود داشته باشه.نقل قول:
بعد از تگ <Form/> رجیستر کنم.
من یه کلندر شمسی رو دانلود کردم که لینکش رو تو یکی از تاپیکهای این تالار هم قراردادم.
قصد دارم تا اون رو به یک کامپوزیت کنترل تبدیل کنم. برای اینکار باید کد زیر رو بعد از تگ <Form/> قرار بدم. نمیدونم چرا ولی هر جاقبل از این تک کار نمیکنه و لی هرجا بعد از این تگ درست کار میکنه. کد اینه :
<script language="javascript" type="text/javascript">
addCalendar(CalenderName,Title,TextBoxName,FormNam e);
</script>
من تاجایی هم که این کنترل رو نوشتم برای شما قرار میدم تا اگر مشکلی در جایی هست بهم بگید.
درضمن مشکل دیگه این هست که من می خوام از این کنترل در صفحه های ASCX استفاده کنم.
بنابراین باید راهی پیدا کرد که این کد بعد از تگ فرم د صفحه ASPX درج بشه و یا .... .
تشکر.
به نظر میاد راه حلی برای این کار نیست!!!
کمی فرصت بدید شب یه نگاهی بهش میندازیم، الان خیلی گرفتارم
تشکر.
از اونجایی که چنین کامپونتی موجود نیست اگر کار به نتیجه برسه همه دوستان حاظر در سایت میتونن از اون استفاده کنن.
یک Literal Control بعد از تگ <form/> قرار بده و در روال Page_Load، خاصیت Text اش رو برابر با عبارت Script ات قرار بده.
موفق باشید.
ما الان داخل یک کنترل هستیم! از داخل یک کنترل چطوری یه Literal بعد از تگ فرم قرار بدیم؟!
(ضمنا شرمنده هنوز فرصت نکردم)
یک تگ DIV یا SPAN بعد از تگ FORM بزارید و با دستوری مشابه
document.getElementById
میتونید به اون شی دسترسی پیدا کنید و با استفاده از خاصیت innerHTML کد مورد نظر خودتون رو داخلش قرار بدید.
فرایند اضافه کردن هرتقویم رو اگر به صورت زیر بنویسید، هر جایی می تونید اون رو بزارید. حالا با همون RegisterClientScriptBlock که عرض کردم می تونید رجیسترش کنید.
مثال:
<Script Language="JavaScript">
if (window.addEventListener) window.addEventListener("load",doOnload,false);els e if (window.attachEvent) window.attachEvent("onload",doOnload);
function doOnload(){
addCalendar("calFirstDate", "Select Date", "myFirstDate", "myForm");
}
</Script>
سپاس بیکران از شما دوست عزیز
مشکل حل شد.
ممکنه بپرسم این کدی که شما فرمودی چه مشکلی رو حل کرد و به چه شکل؟
کنترل فوق رو هم برای استفاده دیگر دوستان در تاپیکی جدا(در صورت صلاح دید برای جدا کردن تاپیک) ارسال خواهم کرد تا دوستان دیگر اشکالات احتمالی موجود را نیز گرفته و تبدیل به کنترلی کامل شود.
با تشکر از جناب titbasoft که کمک بزرگی کردن این کنترل رو برای استفاده دوستان قرار میدم.
بله در ASCX هم کار میکنه. در ASCX هم تست شده.
خودم دارم رو DNN کار میکنم و قصد دارم این کار رو هم انجام بدم. متاسفانه اینجا تالار ویژه ی CMS نداره. ولی اگر این کار نیز به ثمر رسید برای اطلاع دوستان روش کار رو اعلام میکنم. تنها چیزی که هنوز نتونستم تو DNN فارسی کنم همون کلندرش بود که با فکر نمیکنم دیگه برای اینکار مشکل خاصی باشه. البته باید کمی هسته DNN رو دستکاری کرد.
شما برای کار با این کنترل به فایلهای :
PersianDatePicker.dll
dateScript.js
persianPopupCalendar.js
نیاز دارید که DLL رو همراه Java Scriptها در یک پروژه Demo قرار دادم.
همه چیز رو اونجا میتونید برسی کنید.
یه نکته یادم رفت اون هم اینکه کنترل دارای یک پراپرتی به نام CalendarName هست ،که نام کلندر رو برای اون وارد کنید.
برای DNN هم مشکل حل شد.
فقط اجازه بدید کمی کدها و پروپرتی ها رو مرتب کنم، نسخه جدید رو هم در سایت قرار میدیم.
راستش مشکل یک bug اکسبلور بود
الان کیبوردم عربی است و درست نمی تونم تایب کنم
شما می تونیى اون 2 تا فایل اسکریبتتون رو هم امبدد کنید تا دیکه نیازی به خوى فایل های js هم نباشه و فقط DLL ها کفایت کنند اکر نمی دونید جطور اجازه بدید فردا سورستون رو یه نکاهی می کنم شرمنده به هر حال
ضمنا اون کد وابستکی به نام فرم داره و این جیز خوبی نیست راحت میشه تغییرش داد کد تمیز و منظمی داره فکر کنم از بسش خودتون بر بیاید
متاسفانه من چیز زیادی از Java Script و ساخت کامپوزیت کنترل نمیدونم.
بر اساس نیاز روی این بخش از پروژه کار می کنم.
اگر لطف کنید و کمک کنید ممنون میشم.
در مورد امبدد کردن هم نمیدونم آیا منظور شما این هست که کل کد رو تو کنترل بنویسم؟
مثل همون کاری که برای رجیستر کردن Java Scriptها انجام شد؟
در هر حال اصل کار من راه افتاد ولی اگر لطف کنید تا بتونیم این کنترل رو به جایی برسونیم ممنونتون میشم. بلکه از قبل این پروژه یکم js و کامپوزیک کنترل یاد بگیرم. اگر لطف کنید و در مورد نحوه نوشتن Event در کامپوزیت کنترل هم راهنمایی کنید ممنون میشم، قصد دارم که تبدیل به یک کنترل کامل بکنمش.
در هر حال بی صبرانه منتظر شما هستم.
باز هم ممنونم.
هم بله هم خیر، یعنی میشه کل کد رو توی صفحه رندر کرد اما کاری درستی نیست چون صفحه رو به شدت سنگین خواهد کردنقل قول:
در مورد امبدد کردن هم نمیدونم آیا منظور شما این هست که کل کد رو تو کنترل بنویسم؟
مثل همون کاری که برای رجیستر کردن Java Scriptها انجام شد؟
به همین خاطر میشه از HttpHandler ها استفاده کرد، شما با HttpHandler ها آشنایی دارید؟
چه مدل Event ای مورد نظر شماست؟ دقیقا بگید چه کاری می خواهید انجام بدید؟ کنترلتون AutoPostBack باشه؟ و .....نقل قول:
اگر لطف کنید و در مورد نحوه نوشتن Event در کامپوزیت کنترل هم راهنمایی کنید ممنون میشم، قصد دارم که تبدیل به یک کنترل کامل بکنمش.
با مطالب بیان شده آشنایی ندارم اما سرنخ شما باعث شد پیگیری کنم که متوجه شدم می شود با استفاده از کد های زیر :
[assembly: System.Web.UI.WebResource("dateScript.js", "text/js")]
[assembly: System.Web.UI.WebResource("persianPopupCalendar.js ", "text/js")]
فایلهای JS را به پروژه اد کرد. و با استفاده از دستورات :
string dateScript = Page.ClientScript.GetWebResourceUrl(this.GetType() , "dateScript.js");
string persianPopupCalendar = Page.ClientScript.GetWebResourceUrl(this.GetType() , "persianPopupCalendar.js");
Page.ClientScript.RegisterClientScriptInclude("dat eScript.js", dateScript);
Page.ClientScript.RegisterClientScriptInclude("per sianPopupCalendar.js", persianPopupCalendar);
می توان آنها را در برنامه رجیستر و استفاده نمود. ولی وقتی عملی دست به کار شدم صفحه خطای Java Script تولید کرد!!! ممکنه راهنمایی کنید؟
در مورد Event هم می خواهم یک Event تغییر متن TextBox و یا بهتر بگویم OnChange روی TextBox قرار دهم.
از شما کمال تشکر را دارم.
منتظر راهنمایی شما هستم.
تشکر.
همانطور که در تصویر می بینید در DNN قرار گرفت ولی میدانید که DNN تاریخ را میلادی ذخیره میکند باید Eventی برای آن آماده کرد تا بعد از انتخاب تاریخ از تقویم تاریخ در TextBox دات نت نوک نیز درج شود.
این کار هنوز صورت نگرفته ولی برای قرار گرفتن در DNN و تولید ماژول برای DNN آماده است.
میشه این کد رو آپلود کنید
Java Scripها را که دارید.
این هم DLL جدید.
اگر به نتیجه رسیدید لطفن من را نیز خبر کنید.
تشکر.
باید این DLL رو در فولدر Bin کپی کنید و فایلهای Java Script را نیز در فولدر JS و سپس کنترل را روی هر فرمی که می خواهید قرار دهید.
پراپرتی Path را برابر با مسیر فولدر JS قرار دهید.
اما همانطور که گفتم نیاز به یک Event دارد تا کامل شود.
ببخشید، مدتی نتونستم این تاپیک رو پیگیری کنم.
به نتیجه ای رسیدید؟ مشکل دیگه ای نیست؟
مشکل پست 23 هنوز پابرجاست.
کسی نتونست این تقویم DNN رو فارسی کنه ؟
جناب سار میشه اون نمونه ای که در بالا عکسشو گذاشته بودید رو اینجا قرار بدید ؟
ببخشید که مدتی نبودم روی یه پروژه دیگه سویچ کردم و مدتی هم از تهران خارج بودم (برای ردیف کردن کارهای دانشگاه) و دسترسی به نت نداشتم. اما عرض شود که آخرین کد رو هم برای شما DLL اون رو قرار دادم. از همون استفاده کنید. فایلهای JS رو تو یک فولدر بریزید و بعد مقدار پراپرتی Path رو برای کنترل تقویم برابر با مسیر اون قرار بدید مثلن اگر مسیر فایلهای شما این هست : JS/~ مقدار Path رو برابر با JS قرار بدید. من به همین روش در DNN از اون استفاده کردم و هیچ مشکلی هم نداشتم.
اگر مشکلی بود خبر بدید تا برسی کنم.
تشکر.
میشه یک صفحه از DNN که از این DLL توش استفاده شده رو اینجا بزارید ممنون میشم . در ضمن اگر لینکی در مورد نحوه ساخت skin برای DNN دارید ممنون میشم بزارید من Document های خودش رو نگاه کردم خیلی طولانی بود و درست چیزی متوجه نشدم .
در مورد Skin باید بگم ساختش کار خیلی سختی نیست و تقریبن نیاز به هیچ نوع مستنداتی نداره. اگر یک نمونه از Skin های خودش رو برسی کنید مشکل برطرف میشه. Skin یک مشت تصاویر هست که در موارد کمی نیاز به نوشتن کد داره. یکی از این موارد زمانی هست که سایت دارای دو زبان باشه که یکی چپ به راست و دیگری راست به چپ. از قسمت های گرافیکیش که رد بشیم(چون من روش کار نمیکنم و بچه های گرافیست شرکت روش کار می کنن) باقیش ASCXهایی است که از قبل تولید شده(Conrolهای خود DNN) و در جاهای مختلف لود میشه، که البته همه به شکل استاتیک لود میشن. متاسفانه نمیتونم Skinی رو که تولید کردیم رو برای شما ارسال کنم ولی اگر نیاز به کمکی بود در خدمتم.
نمونه فایلی رو هم که خواسته بودید برای شما ارسال کردم. امیدوارم مفید باشه.
کد مربوطه به کلندر شمسی به این شکل هست :
<cc1:DatePicker ID="DatePicker1" runat="server" MDate="2006-12-26" Path="js" PictureFileName="Images/calbtn.gif" />
دوست عزیز سار درست است که در کشور ما قانون کپی رایت رعایت نمی شود ولی این دلیل نمی شود که شما کنترل بنده را به نام خودتان قرار دهید اینم لینک آن :
http://www.developercenter.ir/Forum/...ead.php?t=4728
حق با شماست
ولی اگر از DLL پراپرتی بگیرید خواهید دید که نام نویسنده اصلی (یعنی جایی که من JS ها رو دانلود کردم) و کسی که DLL را تولید کرده(یعنی من) ذکر شده + اینکه بخش مربوط به کپی رایت در کدهای JS دست نخورده و کماکان به جای خود باقی است دقیقن همانطوری که از سایت مبدا DL شده. کمی دقت کنید خواهید دید که من مطابق همان قرار دادی که در سایت مبدا ذکر شده عمل کردم. و حتی در ابتدای تاپیک هم ذکر کردم که JS ها دانلودی هستن و من فقط آن را یک کنترل کردم.
دقت کنید خواهید دید.
سایت منبع : http://hoomb.dnsalias.com/index.php?page=copyright
توافق نامه سایت با استفاده کننده گان هم به شرح زیر است :
و کد بخش کپی رایت JSها که می توانید با JSهایی که من برای DL در این سایت گذاشتم چک کنید:نقل قول:
این برنامه تحت لیسانس GNU منتشر شده است و بدین معنا میباشد که شما در استفاده از این برنامه هیچ محدودیتی ندارید و آن را میتوانید خیلی راحت در تمام برنامه های خود استفاده نمایید و حتی تغییر دهید. فقط اجازه پاک کردن قسمت اصلی بالای آن را که حاوی توضیحات کپی رایت و همچنین تاریخچه تغییرات میباشد را ندارید. البته اگر تغییری در آن دادید که به نظرتان برای کاربران دیگر مفید بوده و یا اگر اشکالی در آن پیدا کردید، خیلی ممنون میشوم که این تغییر و یا گزارش اشکال و یا رفع اشکال را برای من هم بفرستید که برای استفاده دیگران با نام خودتان در این سایت قرار دهم.
/************************************************** ****************************
' Filename: persianPopupCalendar.js
' Author: Hooman Behmanesh
' E-Mail: hoomb@web.de (please mention persianPopupCalendar in subject)
' Project: Persian Popup Calendar
' ================================================== ===========================
' Copyright (c) 2006, Hooman Behmanesh. All rights reserved.
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this script and associated files, to deal in the Software without restriction
' including without limitation the rights.
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Script, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in
' all copies or substantial portions of the Scripts:
'
' THE SCRIPT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
'
' ================================================== ===========================
' Thanks to:
' - Xin Yang (http://www.yxscripts.com) for his earlier version of "Popup Calendar(Window)"
' which I have used as base kernel of this script.
' - Mehdi Vojoudi (http://www.vojoudi.com) for his Solar Date Conversion algorithms
' ================================================== ===========================
'
' I will really appreciate if you send me any changed, fixed bugs or
' extended version of this Script by you to help to extend the script.
' Also I will have the pleasure to receive any reported bug and suggestions.
'
' You can use following fields to record your name to prove your
' Development participate in Persian Popup Calendar Script project.
'
' ================================================== ===========================
' Date Person Description
' ---------- ---------------- ---------------------------------
' 30.03.2006 Hooman Behmanesh Initial Version
' 31.03.2006 Hooman Behmanesh Fix a bug in Return of Current date
' 20.04.2006 Hooman Behmanesh Major Change, Design as DIV instead of Window
' 25.09.2006 Hooman Behmanesh Fix the IFrame position, also FireFox compatibility.
' 28.09.2006 Hooman Behmanesh Fix the Weekday bug
'
************************************************** *****************************/
حال با فایلهای JSی که من قرا دادم چک کنید و بعد نتیجه را اعلام نمایید.
از نظر من کپی رایت کاملن راعایت شده.
اما یک نکته جالب در بخش کپی رایت فایلهای JS شما که البته با استفاده از گزینه Save as از سایت شما بر داشتم که در بالا لینک داده بودید :
/************************************************** ****************************
' Filename: persianPopupCalendar.js
' Author: Shahram Darvishi
' E-Mail: Sloveir@yahoo.com (please mention persianPopupCalendar in subject)
' Project: Persian Popup Calendar
' ================================================== ===========================
' Copyright (c) 2006, Shahram Darvishi. All rights reserved.
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this script and associated files, to deal in the Software without restriction
' including without limitation the rights.
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Script, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in
' all copies or substantial portions of the Scripts:
'
' THE SCRIPT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
' SOFTWARE.
'
' ================================================== ===========================
' Thanks to:
' - Xin Yang (http://www.yxscripts.com) for his "Popup Calendar(Window)"
' which I have used as base kernel of this script.
' - Mehdi Vojoudi (http://www.vojoudi.com) for his Solar Date Conversion algorithms
' ================================================== ===========================
'
' I will really appreciate if you send me any changed, fixed bugs or
' extended version of this Script by you to help to extend the script.
' Also I will have the pleasure to receive any reported bug and suggestions.
'
' You can use following fields to record your name to prove your
' Development participate in Persian Popup Calendar Script project.
'
' ================================================== ===========================
' Date Person Description
' ---------- ---------------- ---------------------------------
' 30.03.2006 Shahram Darvishi Initial Version
' 31.03.2006 Shahram Darvishi Fix a bug in Return of Current date
' 20.04.2006 Shahram Darvishi Major Change, Design as DIV instead of Window
'
************************************************** *****************************/
نکته جالب اینجاست که کدهی JSشما همان است که من دانلود کردم و منبع آن را معرفی کردم. حال یا شهرام درویش کد اصلی را تولید کرده و یا هومن بهمنش و یا شما آقای قاسم نمازی!!!!؟؟؟
البته یک فرق دیگه هم هست و اون اینه که JSهای شما 2 ورژن عقب تر از مال من هست. بهتر برید در سایت اصلی و ورژن جدید رو دانلود کنید.
در هر حال همانطور که گفتم من کپی رایت را همانطوری که در سایت منبع دیدم رعایت کردم.
حال پیدا کنید کسی را که کپی رایت را رعایت نمی کند.
به مدیران سایت هم پیشنهاد می کنم یک دکمه عذرخواهی در کنار تشکر اضافه کنند. :چشمک: