Introduction:
Composite Custom Control are those
control which contain another controls means there is like as controls inside a
control. It is almost like as user custom control in ASP.NET which is used like
as a container to keep another control in it. Here we are going to create the
file upload composite control them later use it inside a web application. For this
we have to inherit the Composite Control Class, It is very useful class we can
use it's functionality or features which becomes very helpful to us. In the
Composite Control you will have to create the instance of the control for which
control you want to add into the container. Let we move forward that how will we
create and use later, Now follow some step which is given below.
Step 1: Firstly we are going to open the
Web Server Control application
Step 2: Now you have to
change the name of ServerControl.cs file to AdFup.cs.
Step 3: Further
Toolbox Data attribute for the class, change the
string "ServerCOntrol1" to "AdFup.cs" in both places where it occurs.
[ToolboxData("<{0}:AdFup.cs
runat=server></{0}:AdFup.cs>")]
Step 4: Now write the below code for
the class named AdFup.cs which inherits the base class name as Composite
Control, InamingContainer.
Code:
using System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Linq;
using
System.Text;
using System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Configuration;
using System.IO;
namespace
ServerControl1
{
[DefaultProperty("Text"),
ToolboxData("<{0}:AdFup
runat=\"server\"> </{0}:AdFup>")]
public class
AdFup :
CompositeControl, INamingContainer
{
protected
Label lbl;
protected
FileUpload fu;
public AdFup()
{
}
[Bindable(true),
Category("Miscellaneous"),
DefaultValue(""),
Localizable(true)]
public
string LText
{
get { EnsureChildControls();
return lbl.Text; }
set { EnsureChildControls();
lbl.Text = value; }
}
[Bindable(true),
Category("Miscellaneous"),
DefaultValue(""),
Localizable(true)]
public string
FName
{
get
{
string s = (string)ViewState["FName"];
if (s ==
null)
{
return
string.Empty;
}
else
{
return s;
}
}
set { ViewState["FName"]
= value; }
}
[Bindable(true),
Category("Miscellaneous"),
DefaultValue(""),
Localizable(true)]
public string
FPath
{
get
{
string s = (string)ViewState["FPath"];
if (s ==
null)
{
return
string.Empty;
}
else
{
return s;
}
set { ViewState["FPath"]
= value; }
}
[Bindable(true),
Category("Miscellaneous"),
DefaultValue(""),
Localizable(true)]
public string
FCheck
{
get
{
string s = (string)ViewState["FCheck"];
if (s ==
null)
{
return
string.Empty;
}
else
{
return s;
}
}
set { ViewState["FCheck"]
= value; }
}
[Bindable(true),
Category("Miscellaneous"),
DefaultValue(""),
Localizable(true)]
public string
Ext
{
get
{
string s = (string)ViewState["Ext"];
if (s ==
null)
{
return
string.Empty;
}
else
{
return s;
}
}
set { ViewState["Ext"]
= value; }
}
public AdFup(string
labelText, string fileName,
string filePath,
string extension)
{
LText = labelText;
FName = fileName;
FPath = filePath;
Ext = extension;
}
protected
override void CreateChildControls()
{
Controls.Clear();
lbl = new
Label();
Controls.Add(lbl);
fu = new
FileUpload();
Controls.Add(fu);
fu.BackColor =
Color.Chocolate;
}
}
}
Code Description:
In this code given above we are using two things first a property and second a
method, Property which named is text which will set the text property of the
File Upload composite control. Further we have to make a method named as
CreateChildControls (which is a method of base class Composite Control), will
override to implement some other changes into the controls we are making. It is
used to add the instances of the Controls which we have made above to the
container.
Step 5: Now after doing all
that we have to open a fine named as AssemblyInfo.cs and write the code given
below.
using
System.Web.UI;
[assembly:
TagPrefix("ServerControl1",
"FUPLD")].
Step 6: Now we have to
build the application by click on build solution and close it.
Step 7: Now we have to create an ASP.NET Empty web application to test the control.
Step 8: Now we will add
a new project
Step 9: Right click on
Solution Explorer and set as start up project.
Step 10: Now Right
Click on Website project and add reference of the project name as ServerControl1
.
Step 11: Now it will
appear into the file upload Composite_control Component which is at the
top of the toolbox.
Step 12: Now if you
want to add it into the Toolbox Control then
-
Right Click on any control
of Toolbox.
-
And Select Choose item.
-
Select the .NET Component
and browse the button add the ServerControl1.dll to the .NET Component
-
Now the component will be added to the .NET
framework component.
Step 13: Further you
have to drag and drop the file upload composite control from the toolbox and you
see that in the source file of default.aspx there is something added like as a
directive and a instance of control information shown in the source file of
default.aspx, it will seem like as given below. You can add this register
directive to the other pages to access the control.
<%@
Register assembly="ServerControl1"
namespace="ServerControl1"
tagprefix="FUPLD"
%>
<CC:AdFup
ID="AdFup1"
runat="server"
style="z-index:
1; left: 10px;
top: 15px;
position:
absolute" BackColor="#FF9966"
BorderColor="#006666"
BorderStyle="Groove"
/>
Step 14: Now you will
run the application by pressing F5.
Output: