PDA

View Full Version : سوال: چگونگی دسترسی به کنترل های مستر پیج؟؟



mialdf
شنبه 23 آبان 1388, 22:11 عصر
سلام دوستان
من چه جوری میتونم روی کنترل های دیگر صفحاتم دسترسی داشته باشم به طوری که بتونم مثلاً visible شونو true یا false کنم؟
من میخوام روی کنترل های مستر پیجم دسترسی داشته باشم.

ممنونم دوستان

alisebt
شنبه 23 آبان 1388, 23:11 عصر
Master.FindControl("yourcontrol").visible=false

bahar_engineer
یک شنبه 24 آبان 1388, 10:18 صبح
سلام

من توی مسترپیجم یه یوزر کنترل دارم که یه تابع داره ... می خوام از توی صفحات سایت بتونم اون تابع رو صدا بزنم

این کارو چطور می تونم انجام بدم؟

گفتم شبیه به این تاپیکه دیگه جدید نزدم

alisebt
یک شنبه 24 آبان 1388, 10:32 صبح
CType(Me.Master, MasterPages_MasterPageName).FunctionOrSubName()

منبع :http://snipplr.com/view/13057/call-a-function-in-your-masterpage-from-your-aspx-page/

mohammad.sakhidel
یک شنبه 24 آبان 1388, 10:34 صبح
به نظرم خیلی دارین پیچیدش می کنین ، اگه از تابعی زیاد استفاده می کنین اونو در کلاسی قرار بدین و توی تمام پروژتون ازش استفاده کنین حتی توی یوزر کنترلتون.

bahar_engineer
یک شنبه 24 آبان 1388, 11:40 صبح
به نظرم خیلی دارین پیچیدش می کنین ، اگه از تابعی زیاد استفاده می کنین اونو در کلاسی قرار بدین و توی تمام پروژتون ازش استفاده کنین حتی توی یوزر کنترلتون.

آخه اون تابع شامل کنترلهای زیادی می شه که توی یوزرکنترل استفاده می شن و بعضی هاشون هم توی صفحات مختلف...

نمی شه توی کلاس بذارم

می شه بگین مشکل این کد چیه ؟


UserControl cart = (UserControl)Master.FindControl("cart");
DataGrid mydg = (DataGrid)cart.FindControl("dg");


اسم یوزر کنترلم cart.ascx هست و اسم دیتاگریدم که توی یوزرکنترل هست dg ..

من بی خیال کد نویسی توی یوزرکنترل شدم ... با این روش می خوام از توی صفحه به کنترلهای یوزر دسترسی داشته باشم و دیتاگریدش رو از توی صفحات پر کنم... اما خطا می ده که ازش نمونه تعریف کن... دیگه چطور نمونه تعریف کنم؟



Object reference not set to an instance of an object.

mohammad.sakhidel
یک شنبه 24 آبان 1388, 12:36 عصر
روش کار که درسته ، خودم تستش کردم و کد زیر جواب داد :

UserControl ctrl = (UserControl)this.Master.FindControl("userControl1");
GridView gv = (GridView)ctrl.FindControl("GridView1");
Label1.Text = gv.ID;

دقت کن ورودی تابع FindControl آی دی(ID) کنترلت توی صفحه مستر هست نه اسمش.

bahar_engineer
یک شنبه 24 آبان 1388, 12:47 عصر
روش کار که درسته ، خودم تستش کردم و کد زیر جواب داد :

UserControl ctrl = (UserControl)this.Master.FindControl("userControl1");
GridView gv = (GridView)ctrl.FindControl("GridView1");
Label1.Text = gv.ID;

دقت کن ورودی تابع FindControl آی دی(ID) کنترلت توی صفحه مستر هست نه اسمش.

ID همینه که گذاشتم ... توی property روبروی IDنوشته dg

bahar_engineer
یک شنبه 24 آبان 1388, 12:53 عصر
بله درست فرمودین من اسم یوزرکنترل رو اشتباه گذاشته بودم ... توی مسترپیج Id اون cart1 بود که وقتی تغییر دادم خطا برطرف شد

ممنون

mohammad.sakhidel
یک شنبه 24 آبان 1388, 12:55 عصر
آی دی یوزر کنترل رو چک کنین.

احمد سامعی
شنبه 22 خرداد 1389, 20:48 عصر
دوستان این روش پست دو برای مسترپیج های تو در تو کاربرد نداره می شه یا من نتونستم دسترسی پیدا کنم برای این تو در تو ها بفرمائید چی کار کنیم (من از VS 2008 استفاده می کنم)

hamedsabzian
شنبه 22 خرداد 1389, 23:06 عصر
دوستان این روش پست دو برای مسترپیج های تو در تو کاربرد نداره می شه یا من نتونستم دسترسی پیدا کنم برای این تو در تو ها بفرمائید چی کار کنیم (من از VS 2008 استفاده می کنم)

یه نمونه کد از دستیابی به کنترل های Master Page های تودرتو:

احمد سامعی
یک شنبه 23 خرداد 1389, 02:50 صبح
گاهی یک نمونه کد ...

آقا حرفتون بسیار درست :گیج:ای کاش همه دوستان همین میفهمیدن هرچند برای بعضی موارد باید توضیح داده بشه که بفهمیم چی به چی ! اما این جور سوالات نه فقط یک کد ساده:قلب:

اما ای کاش من زودتر جواب شما رو چک می کردم:افسرده::افسرده::افسرده:

من از همون روش ایجاد پراپرتی رفتم و تمام صفحات پروژم که حدوده بیست و خورده ای بود یکی یکی این کار کردم فقط مشکل اونروش اینکه برای همه صفحات حتماً باید ویرچوال پس تعریف کنی واگر خوب جواب می ده

به هر حال خوب بود باز هم ممنون:قلب::قلب: