Solved

Load user control dynamically

Posted on 2008-10-02
10
1,084 Views
Last Modified: 2012-05-05
I have a master page and a user control. User Control is resgistered on xyz.aspx page. URL rewriting loads xyz.aspx page which in turn loads the UC which shows up on the page/masterpage.

UC builds a side menu.
I added 2 links to my master page. When clicking..i want to call the routine inside the usercontrol to refresh the side menu. Anyway to do this??
0
Comment
Question by:Camillia
  • 6
  • 4
10 Comments
 
LVL 6

Accepted Solution

by:
RishadanPort earned 500 total points
ID: 22628132
First I want to say that I do not know much about "aspx"

I do however have a lot of experience with C# UserControls.

In C# I would simply wrap a routine in a class that inherits a UserControl, and modify the designing like I want it. Here is an example of a class UserControl

public class XYZ_ASPX_PAGE : UserControl
{
   public XYZ_ASPX_PAGE(){
      InitializeComponent();
   }

   public void refreshSideMenu(){
      ....
   }
}


Outside this class I would simply do something like this:

XYZ_ASPX_PAGE page = new XYZ_ASPX_PAGE();

and to add the page to my Main Page, I would do this:

this.masterPage.Controls.Add(page);


I hope this helps
0
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22628153
Oh and, once you do this, you can simply do:

this.XYZ_ASPX_PAGE.refreshSideMenu();

to refresh the Side Menu
0
 
LVL 7

Author Comment

by:Camillia
ID: 22628327
No, doesnt make sense to me.

1.I have the linkbuttons on a Masterpage:
public partial class MasterPages_Universal : System.Web.UI.MasterPage

So i cant inherit from the UserControl

2. That "refreshsidemenu" is supposed to be in the userContol..right?

3. I did this in click event of the linkbuttons:
   Control FeaturedProductUserControl = LoadControl("~/Controls/ProductFilter.ascx");
  Controls.Add(FeaturedProductUserControl);

This calls my userControl but it doesnt call the "refreshsidemenu"  routine. Anyway to do that?

4. Do you know how I can refresh the entire page when the linkbutton is clicked (maybe this would be easier than loading ONE usercontrol..load the entire page instead of one user control)
0
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22628444
I see what your saying now, MasterPage's Control property can not add in System.Windows.Forms.UserControls... What it does add in is Web.UI.Control. Let me research this topic for a while
0
 
LVL 7

Author Comment

by:Camillia
ID: 22628496
there has to be somehow dynamically calling this:

I made the UC rotuine public..i tried this:
 Control FeaturedProductUserControl = LoadControl("~/Controls/ProductFilter.ascx");
            Controls.Add(FeaturedProductUserControl);
  FeaturedProductUserControl.<i dont see the rotuine here>

*** I thought about reloading the entire page but there are so many user controls and pieces to this and they're all separate...
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 6

Expert Comment

by:RishadanPort
ID: 22628513
Well you can't see the routine since you are dealing with the Object Control.

You need to type cast it to a higher level object in order to see the routines
0
 
LVL 7

Author Comment

by:Camillia
ID: 22628530
not sure what you mean...can u give an example...

Also...can this be done with event handeling...do i need an event handler???
0
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22628617
What my book says on this is the following:

1. You need to create a wrapper class that inherits System.Web.UI.Control
-->Here you provide properties, methods, and events.
2. You need to Override the Renderer Method
-->"Each control must implement this method to generate the HTML that represents the control to the browser. Note that the render method is not called directly; instead, a call is made to RenderControl, which then invokes Render. For controls that contain child controls, the RenderChildren method is available."
3. Use HtmlTextWriter object to generate the HTML Code


I am not sure if this helps you... Sorry I am trying my best
0
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22628679
Here is the example that my book uses:
//(1) In herit from the System.Web.UI.Control Class

public class CompanyLogo : System.Web.UI

{

   ... List properties and methods here ...

 

   //(2) Override the Render Method

   protected override void Render(HtmlTextWriter output)

   {

      //(3) Use the HtmlTextWriter to emit html to the browser

   }

}

Open in new window

0
 
LVL 7

Author Comment

by:Camillia
ID: 22629578
let me see, thanks .
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now