PDA

View Full Version : چطور کلاینت ای دی رو ثابت کنم؟؟



hamed_bostan
جمعه 23 شهریور 1386, 13:01 عصر
با سلام .
من یه کنترل تاریخ دارم که جاوا اسکریپتی هست . اون رو داخل یه یوزر کنترل انداختم و مقدارش داخل یه تکست باکس قرار می گیره که کلاینت ای دی اون واسه تقویم جاوا اسکریپتی ارسال میشه . در حالت عادی یوزر کنترل کار می کنه اما وقتی اونو داخل یه فرم می ندازم چون کلاینت ای دی اون input box تغییر می کنه کنترلم کار نمی کنه . چطور کلاینت ای دی رو ثابت و فیکسش کنم تو تمام صفحات؟؟؟

nazaninam
جمعه 23 شهریور 1386, 19:57 عصر
اگر کنترل شما Runat=Server باشه نمی تونید اونو فیکس کنید ! و اصلا اینکار منطقی هم نیست .
اگر میشه بیشتر توضیح بدید که چکاری انجام دادید تا بتونیم کمکتون کنیم

hamed_bostan
جمعه 23 شهریور 1386, 20:32 عصر
ببینید من یه تکست باکس دارم تو یه طوزد کنترل
یه تگ <a> هم دارم که باکلید روی اون یه تقویم جاوا اسکریپتی باز میشه و بعد از انتخاب تاریخ تاریخ به صورت کلاینتی توی تکست باکس سروری من قرار می گیره . واسه اینکه تاریخ توی تکست باکس قرار بگیره در زمان اجرا می بایست کلاینت ای دی این کنترل به تابع جاوا اسکریپتی پاس داده بشه . در حالتی که همه کنترل ها داخل یه صفحه خاص هستند و از طوزر کنترل استفاده نشه خوب ادم کلاینت ای دی رو در میاره و به فانکشن می فرسته و همه چیز خوب کار می کنه چون کلاینت ای دی توی اون صفحه همیشه همونه اما اگر این کنترل ها توی یوزر کنترلی باشن و یوزر کنترل رو توی صفحات مختلف بندازی نام صفحات به ابتدای کلاینت ای دی کنترل اضافه می شه در زمان اجرا پس اطن تابع درست جواب نمی ده و اطن ایراد رو می گیره :



object not found

hamed_bostan
یک شنبه 25 شهریور 1386, 20:52 عصر
کسی راهی بلد نیست؟؟؟

nazaninam
یک شنبه 25 شهریور 1386, 21:05 عصر
ببینید من کامل در جریان کار نیستم ولی پیشنهاد می کنم به جای تگ a از یک Hyperlink استفاده کن و به وسیله متد atrribute رویداد های سمت کلاینت رو بهش نسبت بده . اینجوری همیشه راحت میتونی clientid رو بدرست بیاری

hamed_bostan
دوشنبه 26 شهریور 1386, 11:27 صبح
میشه یه مثال بزنین چطوری؟

nazaninam
دوشنبه 26 شهریور 1386, 14:40 عصر
HyperLink1.Attributes.Add("onclick", "alert('salam');");

hamed_bostan
دوشنبه 26 شهریور 1386, 15:13 عصر
خوب نازنینم این چه ربطی به کلاینت ای دی داره
من میام یه دکمه می ندازم و این رو به atribute اون هم اضافه می کنم . مشکل اینه که در اون لحضه به کلاینت ای دی اون نیاز دارم . شما درست منظور منو متوجه نشدی یا من درست راه حل شما رو نفهمیدم؟؟؟
میشه بیشتر واسه ام توضیح بدی؟ ممنون می شم

Behrouz_Rad
دوشنبه 26 شهریور 1386, 16:01 عصر
حامد جان!
باید ID کنترل TextBox رو به دست بیاری و به تابع جاوا اسکریپتت معرفی کنی.
دنبال خطی بگرد که نوشته شده:


document.getElementById('myTextBox').value = "Selected Date";

روش به دست آوردن آی دی کنترل بستگی به ساختار UC تو داره.
مثلا اگه فرض کنیم که TextBox اولین کنترل از نوع input هست و در یک Table با آی دی myTable قرار داره:


var obj_tbl = document.getElementById('myable');
var obj_txt = obj_tbl.getElementsByTagName("input")[0];
document.getElementById(obj_tbl.id).value = "Selected Date";

روش دیگه هم این هست که یک Property برای UC تعریف کنی که ClientID کنترل TextBox رو برگشت میده و به شکل <% %> جلوی عبارت getElementById قرار بدی.


موفق باشید.