PDA

View Full Version : دسترسی به کنترل های تعریف شده در usercontrol در صفحات عادی



rahil_2008
سه شنبه 21 اردیبهشت 1389, 00:55 صبح
سلام دوستان
می خواستم ببینم چه جوری می شه در صفحه ای که از user control استفاده شده به کنترل های داخل usercontrol دسترسی پیدا کرد؟

rahil_2008
سه شنبه 21 اردیبهشت 1389, 01:03 صبح
واقعیتش من یه همچین کدی نوشتم:


foreach(Control c in Page.Form.Controls)

if(c.GetType().ToString().Equals("System.Web.UI.WebControls.CheckBox"))

البته این کد در صفحات عادی aspx جواب می ده اما وقتی این کد را در یک user control نوشتم و اون user control را در صفحه بکار بردم جواب نداد
یعنی انگار اصلا به کنترل های داخلی user control در صفحه aspx دسترسی نداره؟!

battak
سه شنبه 21 اردیبهشت 1389, 01:17 صبح
البته این کد در صفحات عادی aspx جواب می ده اما وقتی این کد را در یک user control نوشتم و اون user control را در صفحه بکار بردم جواب نداد
یعنی انگار اصلا به کنترل های داخلی user control در صفحه aspx دسترسی نداره؟!

سلام تا اونجاییکه من میدونم باید یه handle در یوزر کنترل بنویسین که بشه از بیرون از این صفحه به اون دسترسی پیدا کرد، و متد های داخل آن رو به کار برد، اگه پیدا کردین که هیچی، اگه نه، بگین براتون بنویسم.

rahil_2008
سه شنبه 21 اردیبهشت 1389, 01:26 صبح
سلام تا اونجاییکه من میدونم باید یه handle در یوزر کنترل بنویسین که بشه از بیرون از این صفحه به اون دسترسی پیدا کرد، و متد های داخل آن رو به کار برد، اگه پیدا کردین که هیچی، اگه نه، بگین براتون بنویسم.
نه متاسفانه من چیزی در این رابطه نمی دونم اگر یه مثال بنویسید ممنون می شم

battak
سه شنبه 21 اردیبهشت 1389, 01:47 صبح
شما باید اول د ر صفحه یوزر کنترلتون توابعی رو تعریف کنین که مقادیری رو بگیره و بتونه ارسال کنه.مثلا:

public string Address1
{
get { return Address1TextBox.Text; }
set { Address1TextBox.Text = value; }
}
و این مقادیر رو دوباره نویسی کنین و به برنامه بشناسونین:

public override string ToString()
{
return String.Format("{0}", Address1);
}

و دکمه ای رو داشته باشین که وقتی از اون استفاده میشه تابع مورد نظر برای ارسال فراخوانی بشه: مثل

protected void Button1_Click(object sender, EventArgs e)
{
if (Accepted != null)
Accepted(this, new EventArgs());
}
بعد در صفحه ای که ازاون دارین استفاده میکنین، در سورس اون صفحه(صفحه ای گه یوزر کنترل در اون قرار گرفته) در مشخصه اون با استفاده از نوشتن متد OnAccepted اونرو فراخونی کنین:

<usercontrol1:Address ID="userName" OnAccepted="BillingAddress_Accepted" Header="Billing address" runat="server" />

rahil_2008
سه شنبه 21 اردیبهشت 1389, 12:48 عصر
ببخشید میشه توضیح بدین accepted چیه؟
راستش من از این کد شما زیاد سر در نمی آرم

battak
سه شنبه 21 اردیبهشت 1389, 13:55 عصر
ببخشید میشه توضیح بدین accepted چیه؟
راستش من از این کد شما زیاد سر در نمی آرم

خواهش میکنم. شاید من نتونستم خوب توضیح بدم، براتون یه مثال میذارم که از چندین صفحه استفاده شده و یوزر کنترلی هم براتون هست که ازش به کار رفته.
باز اگه سوال بود در خدمتم. (البته اگه بتونم خوب توضیح یدم:بامزه:)