PDA

View Full Version : سوال: نحوه استفاده از UserControlها به عنوان صفحات برنامه



alirezaed
پنج شنبه 10 دی 1388, 08:34 صبح
با سلام، با توجه جستجوهایی که بنده انجام دادم، در طراحی صفحات وب یکی از روش‌های معمول و بعضاً مفید برای طراحی یک layout خوب برای WebApplication ها استفاده از userControlها به جای صفحات است. بدین صورت که محتویات صفحات را به جای اینکه در فایلهای aspx ذخیره کنیم، آنها را در فایلهای ascx ذخیره نماییم و در صفحات‌مان از آنها استفاده کنیم.
سئوالی که برای بنده مطرح است این است که چطور می‌توان بدون اینکه نیاز به طراحی صفحه به ازای تک تک uc ها باشد، می‌توان در یک صفحه با رویداد های رخ داده شده در آن صفحه، uc قرار داده شده در صفحه را تغییر داد؟
بطور مثال در تصویر زیر من یک صفحه defualt.aspx دارم که قصد دارم در بخشی ازصفحه که (بخش 3) با انتخاب گزینه های منو(بخش 1)، اطلاعات هر کدام از uc ها(بخش 2) را مشاهده کنم.
به نظر شما چطور می‌توان چنین کاری را انجام داد؟یا اینکه راه حل مشابه چیست؟
http://www.freeimagehosting.net/uploads/2b8e33db6e.png (http://www.freeimagehosting.net/)

yekta64
پنج شنبه 10 دی 1388, 08:58 صبح
با سلام، با توجه جستجوهایی که بنده انجام دادم، در طراحی صفحات وب یکی از روش‌های معمول و بعضاً مفید برای طراحی یک layout خوب برای WebApplication ها استفاده از userControlها به جای صفحات است. بدین صورت که محتویات صفحات را به جای اینکه در فایلهای aspx ذخیره کنیم، آنها را در فایلهای ascx ذخیره نماییم و در صفحات‌مان از آنها استفاده کنیم.
سئوالی که برای بنده مطرح است این است که چطور می‌توان بدون اینکه نیاز به طراحی صفحه به ازای تک تک uc ها باشد، می‌توان در یک صفحه با رویداد های رخ داده شده در آن صفحه، uc قرار داده شده در صفحه را تغییر داد؟
بطور مثال در تصویر زیر من یک صفحه defualt.aspx دارم که قصد دارم در بخشی ازصفحه که (بخش 3) با انتخاب گزینه های منو(بخش 1)، اطلاعات هر کدام از uc ها(بخش 2) را مشاهده کنم.
به نظر شما چطور می‌توان چنین کاری را انجام داد؟یا اینکه راه حل مشابه چیست؟
http://www.freeimagehosting.net/uploads/2b8e33db6e.png (http://www.freeimagehosting.net/)


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



<%@ Register Src="~/Section/TopImage.ascx" TagPrefix="SCH" TagName="TopImage" %>
<%@ Register Src="~/Section/Menu.ascx" TagPrefix="SCH" TagName="Menu" %>


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


<SCH:TopImage ID="TopImage" runat="server" />
<SCH:Menu ID="menu" runat="server" />


موفق باشید.

raziee
پنج شنبه 10 دی 1388, 10:55 صبح
سئوالی که برای بنده مطرح است این است که چطور می‌توان بدون اینکه نیاز به طراحی صفحه به ازای تک تک uc ها باشد، می‌توان در یک صفحه با رویداد های رخ داده شده در آن صفحه، uc قرار داده شده در صفحه را تغییر داد؟


اگه درست متوجه شده باشم شما میخوایند در زمان اجرا یک ی.زر کنترل رو فراخوانی کنید.
دستوری برای لود کردن یوزر کنترل ها داریم.
از اون یوزر کنترل یک نمونه ی جدید میسازید و اون رو لود میکنید.

alirezaed
پنج شنبه 10 دی 1388, 12:49 عصر
اگه درست متوجه شده باشم شما میخوایند در زمان اجرا یک ی.زر کنترل رو فراخوانی کنید.
دستوری برای لود کردن یوزر کنترل ها داریم.
از اون یوزر کنترل یک نمونه ی جدید میسازید و اون رو لود میکنید.

فکر کنم منظورم رو درست نرسوندم.
بله در زمان اجرا رو درست متوجه شدید.
فرضاً الان دو صفحه دارم (دو یوز کنترل) که در هر کدام اطلاعات متفاوتی وجود دارد.
می خواهم در قسمت 3 صفحه (که می‌تواند یک frame باشد)، با انتخاب یک گزینه از منو، صفحه اول (userControl1) در فرم قرار گیرد، و نیز با انتخاب گزینه دوم از منو usercontrol دوم در فرم، نمایش داده شود.

قاعدتا نباید در این صفحه اصلی، کنترل را رجیستر کنم چون ممکن است این دوصفحه به بیش از 20-30 صفحه افزایش پیدا کند.

اگر اشاره ای کنید که دقیقاً از چه دستوری می‌توانم استفاده کنم و از روی آن نمونه بسازم ممنون می‌شوم.

alirezaed
پنج شنبه 10 دی 1388, 15:17 عصر
دوستان! میشه یکی به من بگه الان من باید منتظر بمونم یا راهش رو کسی نمی‌دونه؟
:خجالت:

raziee
پنج شنبه 10 دی 1388, 23:01 عصر
اگر اشاره ای کنید که دقیقاً از چه دستوری می‌توانم استفاده کنم و از روی آن نمونه بسازم ممنون می‌شوم.
راستش من که بازم متوجه نشدم اما ببین این کد به کارت میاد.

Dim a As New Web.UI.UserControl
Panel1.Controls.Clear()
a = CType(Page.LoadControl("~/WebUserControl.ascx"), UserControl)
Panel1.Controls.Add(a)