Click here to Skip to main content
Licence CPOL
First Posted 12 Sep 2008
Views 39,834
Downloads 340
Bookmarked 27 times

Simple WebPart To Load UserControl

It is a simple webpart but very usefull to load many usercontrols

1

2
1 vote, 25.0%
3

4
3 votes, 75.0%
5
4.60/5 - 4 votes
μ 4.60, σa 1.75 [?]

Introduction

Moss/WSS is so CMS popular currently. There are many thing can be which can be done and is modified at deep technology on that product.

Work with on that solution will ever be utilize webpart. But if we develop one webpart sometimes we do ever make same old things which is make coding webpart and load the usercontrol what does we want.

Background

This concept is similiar with SmartPart which you just create one webpart and then it can be used to load all your usercontrol without writing webpart again.

Using the Code

The listing code is like this:

  1. Write on your class solution like this. Please reference Microsoft.Sharepoint.dll component and System.Web.dll too.
using System;
using System.ComponentModel;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebPartPages;

namespace WebPartLib
{
    public class WebPartGeneral : Microsoft.SharePoint.WebPartPages.WebPart
    {
        private Control _childControl = null;
        private string _userControlVirtualPath = string.Empty;
        private string _errMessage = string.Empty;

        public WebPartGeneral()
        { }

        [
          Personalizable(),
          Category("Miscellaneous"),
          DefaultValue(""),
          WebBrowsable(true),
          WebDisplayName("User Control Virtual Path"),
          WebDescription("User Control Virtual Path")
        ]
        public string UserControlVirtualPath
        {
            get { return _userControlVirtualPath; }
            set { _userControlVirtualPath = value; }
        }

        protected override void RenderWebPart(HtmlTextWriter output)
        {
            if (_errMessage != string.Empty) output.Write(_errMessage);
            if (_userControlVirtualPath != string.Empty ||
                _userControlVirtualPath.Equals("") == false)
               RenderChildren(output);
        }

        protected override void RenderChildren(HtmlTextWriter output)
        {
            try
            {
                this.EnsureChildControls();
                if (this._childControl != null)
                    this._childControl.RenderControl(output);
            }
            catch (Exception ex)
            {
                _errMessage = string.Format(
                  "Exception Message (RenderWebPart) = {0}<br />", ex.Message);
            }
        }

        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            if (_userControlVirtualPath != string.Empty)
            {
                if (_childControl != null) return;
                _childControl = Page.LoadControl(_userControlVirtualPath);
                if (_childControl != null)
                    Controls.AddAt(0, _childControl);
            }
        }

        public override void Dispose()
        {
             
        }
    }
}
  1. After the solution already successfully compile and the put the binary into bin folder on your MOss/Wss site. After it also make one folder by which UserControls.

  1. Modify your web.config
eControl Assembly="WebPartLib, Version=1.0.0.0, Culture=neutral"
   Namespace="WebPartLib" TypeName="*" Safe="True"
   AllowRemoteDesigner="True" /> 

and change trust level from WSS_Minimal into Full.

<trust level="Full" originUrl="" /> 
  1. If Necesary you can client restart your IIS and the back to your site again and list the webpart into list of webpart

  2. Create new website solution and create a simple usercontrol and then copy all .ascx and .cs into UserControls folder
  3. Now you can utilize webpart and set the virtual path into your usercontrols and the simsalabim your webpart now load your usercontrol. You can create another usercontrol again and you can add your webpart again and set the usercontrols to load.

Points of Interest

As i mention before, Now every time you create a usercontrol you don't have to create another webpart. It's only use that webpart again and set path into that usercontrols.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

agusto xaverius

Architect
Plasmedia
Indonesia Indonesia

Member
I am a developer,software architecture at one's IT's firm at Indonesia. For detail about my profile you can visit my blog at
http://geeks.netindonesia.net/blogs/agusto

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralCould not load type solved (at least for me) PinmemberClayton Osborn3:51 17 Mar '11  
GeneralGreat PinmemberNiccs2:16 27 Nov '09  
GeneralGetting error while loading the user control Pinmemberam20an0:47 23 Oct '09  
I am able to use your code. The webpart is very well shown in the add web part section as "WebPartGeneral" but when i try to load my control by giving the path in its's miscelleneos section, i am getting an error:-
"An unexpected error has occurred."
I am specifying the path as:-
/usercontrol/wpSample1.ascx
 
If my site is under X port then i need to make folder named as usercontrol. I have done that also. Copied all .ascx and .cs files into usercontrol folder but no luck.
 
Please help.
QuestionNested LoadControl Pinmemberguaneme10:01 5 May '09  
AnswerRe: Nested LoadControl PinmemberGyan Singh0:21 28 Aug '09  
GeneralI'm getting error Pinmemberelnone8515:40 20 Apr '09  
GeneralI have a question please.. PinmemberOslec23:33 19 Apr '09  
GeneralWorks Perfectly PinmemberOslec22:42 19 Apr '09  
QuestionHow to do step 6 Pinmemberhuela12:42 6 Feb '09  
GeneralError while importing .dwp file.. Pinmembervimalthehero2:20 1 Jan '09  
GeneralError while adding the user control Pinmemberjgeeetha0:55 20 Nov '08  
GeneralRe: Error while adding the user control Pinmemberagusto xaverius3:44 22 Nov '08  
Generalreferenced dlls Pinmemberseanrogers8:44 30 Oct '08  
GeneralRe: referenced dlls Pinmemberagusto xaverius7:30 10 Nov '08  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120210.1 | Last Updated 12 Sep 2008
Article Copyright 2008 by agusto xaverius
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid