ASP namespace strong type access for dynamically loaded user control
am 07.04.2008 16:44:39 von Greg James
ASP namespace strong type access for dynamically loaded user control
(web application, not web site)
I have a user control in a web application which I dynamically load
from an aspx page as follows:
UserControl ctl = Page.LoadControl("./User Controls/
MailForwardingGrid2.ascx") as UserControl;
form1.Controls.Add(ctl);
This works fine.
I have added 2 properties to the user control and would like to load
the strong type version of the user control in order to set the new
parameters at runtime. I would like to do something like the
following:
ASP.usercontrols_MailForwardingGrid2_ascx ctrl =
(ASP.usercontrols_MailForwardingGrid2_ascx)Page.LoadControl( "./User
Controls/MailForwardingGrid2.ascx");
ctrl.SourceTypeID = Int32.Parse(context);
ctrl.SourceID = id;
Unfortunately, the ASP namespace is not showing my user control (the
ASP namespace is not showing up at all).
I have tried "<%@ Register ... " and "<%@ Reference ... " to no avail
as follows:
<%@ Register Src="User Controls/MailForwardingGrid2.ascx"
TagName="MailForwardingGrid2"
TagPrefix="uc1" %>
<%@ Reference Control="User Controls/MailForwardingGrid2.ascx" %>
I access user controls through the ASP namespace from web sites all
the time but the current failure is from a web application.
Advice?
-------------------------------------
DETAILS:
Here is the page from which I am attempting to access the user
control...
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="DisplayForm.aspx.cs"
Inherits="WebApplication1.DisplayForm" %>
<%@ Register Src="User Controls/MailForwardingGrid2.ascx"
TagName="MailForwardingGrid2"
TagPrefix="uc1" %>
<%@ Reference Control="User Controls/MailForwardingGrid2.ascx" %>
<%@ Register Assembly="DevExpress.Web.v8.1, Version=8.1.1.0,
Culture=neutral, PublicKeyToken=9b171c9fd64da1d1"
Namespace="DevExpress.Web.ASPxPopupControl" TagPrefix="dxpc" %>
<%@ Register Assembly="AjaxControlToolkit"
Namespace="AjaxControlToolkit" TagPrefix="AjaxToolkit" %>
Untitled Page
Here is the body of the user control:
namespace WebApplication1.User_Controls
{
public partial class MailForwardingGrid2 :
System.Web.UI.UserControl
{
// NCR.Rads.MailForwarding.BusinessObjects.MailForwardInfoList
infoList =
NCR.Rads.MailForwarding.BusinessObjects.MailForwardInfoList. GetMailForwardInfoList(SourceContext,
SourceId);
MailForwardInfoList objList;
protected void Page_Load(object sender, EventArgs e)
{
//objList = MailForwardInfoList.GetMailForwardInfoList(1,
"p000196");
objList =
MailForwardInfoList.GetMailForwardInfoList(SourceTypeID, SourceID);
gvMailForwardingTemplate.DataSource = objList;
gvMailForwardingTemplate.KeyFieldName = "InvoiceId";
gvMailForwardingTemplate.DataBind();
}
private int sourceTypeID;
public int SourceTypeID
{
get { return sourceTypeID; }
set { sourceTypeID = value; }
}
private string sourceID;
public string SourceID
{
get { return sourceID; }
set { sourceID = value; }
}
//
//protected void CslaDataSource1_SelectMethod(object sender,
Csla.Web.SelectObjectArgs e)
//{
// e.BusinessObject = objList;
//}
}
Re: ASP namespace strong type access for dynamically loaded user control
am 07.04.2008 21:44:25 von Mark Fitzpatrick
Does the .ascx also have a codebehind? If so then use the namespace and
classname defined in the codebehind for the user control.
Hope this helps,
Mark Fitzpatrick
Microsoft MVP - Expression
"Greg James" wrote in message
news:374d37cc-028e-4025-ac0b-98ab7df75905@n58g2000hsf.google groups.com...
> ASP namespace strong type access for dynamically loaded user control
> (web application, not web site)
>
> I have a user control in a web application which I dynamically load
> from an aspx page as follows:
> UserControl ctl = Page.LoadControl("./User Controls/
> MailForwardingGrid2.ascx") as UserControl;
> form1.Controls.Add(ctl);
>
> This works fine.
>
> I have added 2 properties to the user control and would like to load
> the strong type version of the user control in order to set the new
>
> parameters at runtime. I would like to do something like the
> following:
> ASP.usercontrols_MailForwardingGrid2_ascx ctrl =
> (ASP.usercontrols_MailForwardingGrid2_ascx)Page.LoadControl( "./User
>
> Controls/MailForwardingGrid2.ascx");
> ctrl.SourceTypeID = Int32.Parse(context);
> ctrl.SourceID = id;
>
> Unfortunately, the ASP namespace is not showing my user control (the
> ASP namespace is not showing up at all).
>
> I have tried "<%@ Register ... " and "<%@ Reference ... " to no avail
> as follows:
>
>
> <%@ Register Src="User Controls/MailForwardingGrid2.ascx"
> TagName="MailForwardingGrid2"
> TagPrefix="uc1" %>
> <%@ Reference Control="User Controls/MailForwardingGrid2.ascx" %>
>
> I access user controls through the ASP namespace from web sites all
> the time but the current failure is from a web application.
>
> Advice?
>
>
> -------------------------------------
> DETAILS:
> Here is the page from which I am attempting to access the user
> control...
>
> <%@ Page Language="C#" AutoEventWireup="true"
> CodeBehind="DisplayForm.aspx.cs"
> Inherits="WebApplication1.DisplayForm" %>
>
> <%@ Register Src="User Controls/MailForwardingGrid2.ascx"
> TagName="MailForwardingGrid2"
> TagPrefix="uc1" %>
>
> <%@ Reference Control="User Controls/MailForwardingGrid2.ascx" %>
>
> <%@ Register Assembly="DevExpress.Web.v8.1, Version=8.1.1.0,
> Culture=neutral, PublicKeyToken=9b171c9fd64da1d1"
> Namespace="DevExpress.Web.ASPxPopupControl" TagPrefix="dxpc" %>
>
> <%@ Register Assembly="AjaxControlToolkit"
> Namespace="AjaxControlToolkit" TagPrefix="AjaxToolkit" %>
>
>
>
>
>
> Untitled Page
>
>
>
>
>
>
>
> Here is the body of the user control:
> namespace WebApplication1.User_Controls
> {
>
> public partial class MailForwardingGrid2 :
> System.Web.UI.UserControl
> {
> // NCR.Rads.MailForwarding.BusinessObjects.MailForwardInfoList
> infoList =
>
> NCR.Rads.MailForwarding.BusinessObjects.MailForwardInfoList. GetMailForwardInfoList(SourceContext,
> SourceId);
> MailForwardInfoList objList;
>
> protected void Page_Load(object sender, EventArgs e)
> {
> //objList = MailForwardInfoList.GetMailForwardInfoList(1,
> "p000196");
> objList =
> MailForwardInfoList.GetMailForwardInfoList(SourceTypeID, SourceID);
> gvMailForwardingTemplate.DataSource = objList;
> gvMailForwardingTemplate.KeyFieldName = "InvoiceId";
> gvMailForwardingTemplate.DataBind();
> }
>
> private int sourceTypeID;
> public int SourceTypeID
> {
> get { return sourceTypeID; }
> set { sourceTypeID = value; }
> }
>
> private string sourceID;
> public string SourceID
> {
> get { return sourceID; }
> set { sourceID = value; }
> }
>
>
>
> //
> //protected void CslaDataSource1_SelectMethod(object sender,
> Csla.Web.SelectObjectArgs e)
> //{
> // e.BusinessObject = objList;
>
> //}
> }
>