Introduction
This article is a beginner's introduction to Web parts in ASP.NET. We will try to see what exactly are web parts, why they are so useful in web development and how to implement Web parts in our application.Background
There are many scenarios in our application where we want to either collect/present groups of information to the user. We would like to have the possibility for the user to selectively view any group of information. The user may also have an option of not viewing any group at all. The iGoogle interface is an excellent example of web parts in action. The user can choose to add some information on the page and he can even decide the appearance and location of that web part. Let us try to see if we want to implement similar functionality in ASP.NET then how can we accomplish it using Web parts.Using the Code
In ASP.NET terminology, Web parts are components that have some predefined functionality and they can be embedded in any web page. User can change the appearance and data related parameters of all web parts independently.Advantages of Web Parts
- Web Parts facilitate personalization of page content. They let the users to move or hide the Web Parts and add new Web Parts changing the page layout.
- Web Parts let the user to export or import Web Parts settings for use in other pages.
- Web Parts can work in unison with ASP.NET role-based web access model. Each Web Part can be configured to be visible or hidden for any role.
- Web Parts can share data with each other.
WebPartsManager
: This is a non visual control that has to be added on every page that needs to have web parts embedded in them. This control will facilitate the management of different web parts on a page.CatalogPart
: This control is for managing the UI elements of all the web part available on a page. This control manages the web parts for the whole website.PageCatalogPart
: This control provides the same functionality as theCatalogPart
but it does it for an individual page rather than for the complete web site.EditorPart
: This control lets the user customize the properties of web parts.WebPartZOne
: This control is like a container for web parts. Any web part can be added toWebPartZone
only.EditorZone
: This control is like a container forEditorParts
. AnyEditorPart
can be added onEditorZone
only.CatalogZone
: This control is like a container forCatalogParts
. AnyCatalogPart
can be added onCatalogZone
only.
Web Parts Modes
- Normal mode: The user cannot edit or move sections of page.
- Edit Mode: End user can edit Web Parts on the page including Web Parts title, color or even setting custom properties.
- Design Mode: End user can rearrange the order of the pages Web Parts in a
WebPartZone
. - Catalog Mode: End user can add new Web Parts or add deleted Web Parts in any
WebPartZone
on the page.
- Let us add a
WebPartsManager
and threeWebPartZone
s on the page. - Once we have the three web part zones added on the page, we will add a label web part on our
headerzone
. - Add calendar, a textbox and a drop down on our content zone.
- Add a copyright message on the footer zone.
- Let's add a page
catalogpart
on the page too (we will see why this is useful).
The label on the header part will be used to display the users name. The text box on the content web part will be used to take the user name input. The drop down list will be used to enable the user to change the appearance of web parts and let them drag and drop these web parts in any of the zones. If we look at the markup of our page:
Collapse | Copy Code
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="WebPartManager1" runat="server">
</asp:WebPartManager>
</div>
<asp:WebPartZone ID="WebPartZoneHeader" runat="server" Height="1px" Width="865px"
HeaderText="Welcome">
<ZoneTemplate>
<asp:Label ID="welcomeWebPart" runat="server" Text="User" title="Welcome"
Width="199px"></asp:Label>
</ZoneTemplate>
</asp:WebPartZone>
<asp:WebPartZone ID="WebPartZoneContent" runat="server" Height="1px" Width="865px"
HeaderText="Pick a Day">
<ZoneTemplate>
<asp:TextBox ID="TextBoxName" runat="server" Title="Enter your name">
</asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server"
Title="Change Display modes" AutoPostBack="True"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
<asp:Calendar ID="CalendarWebPArt" runat="server" title="Pick a day">
</asp:Calendar>
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server">
<ZoneTemplate>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<asp:WebPartZone ID="WebPartZoneFooter" runat="server" Height="35px" Width="865px"
HeaderText="Copyright">
<ZoneTemplate>
<asp:Label ID="footerWebPart" runat="server" Text="This is a test website."
title="Copyright info"></asp:Label>
</ZoneTemplate>
</asp:WebPartZone>
</form>
When we run the page, we can see that user can see these web parts,
he can choose to minimize them, restore them or even close them. The
drop down list shows all the possible views for the web parts on the
page. We populated the dropdown with all the possible modes of Webpartmanager
on this page and if the user changes the view, we will use the new value to set the view mode of web parts.
Collapse | Copy Code
protected void Page_Load(object sender, EventArgs e)
{
welcomeWebPart.Text = TextBoxName.Text;
if (IsPostBack == false)
{
foreach (WebPartDisplayMode mode in WebPartManager1.SupportedDisplayModes)
{
DropDownList1.Items.Add(mode.Name);
}
DropDownList1.SelectedValue = WebPartManager1.DisplayMode.ToString();
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (WebPartManager1.SupportedDisplayModes[DropDownList1.SelectedValue] != null)
{
WebPartManager1.DisplayMode = WebPartManager1.SupportedDisplayModes
[DropDownList1.SelectedValue];
}
}
There is one small problem though. If the user closes any web part, he will not be able to restore that web part. For providing this functionality, we will use the page
catalogwebpart
that we
added on the page so that the user, when in catalog mode, should be able
to change the appearances of web parts and even restore the closed web
parts.The web parts can also use the data on other web part. We can create a
ConnectionProvider
and a ConnectionConsumer
and then use the static
connection property of Webpart
manager to facilitate this.
No comments:
Post a Comment