How to reference UserControl in server code

M

Mark Friedman

I can't seem to figure out how to get a reference to a UserControl in the
code-behind for the page that contains the control. All the examples I've
seen show how to pass property values from the containing page's HTML to the
UserControl but nothing I've seen shows how to reference the UserControl's
properties (or subcontrols) from the containing page's server-side code.
Note that I'm not creating the UserControl prgrammatically via LoadControl -
I'm creating the UserControl declaratively in the page's HTML.

Thanks in advance for any help.

-Mark
 
K

Kenn Ghannon

I think you can do it using a
System.Web.UI.HtmlControls.HtmlGenericControl...
 
M

Mark Friedman

I'm not sure what you mean here, Kenn. Could you be a little more specific?

-Mark
 
M

Mark Friedman

How do you know which control is the one you want, since the IDs get
mangled?

-Mark

Iain said:
"Mark Friedman" <[email protected]> wrote in message
I can't seem to figure out how to get a reference to a UserControl in the
code-behind for the page that contains the control. All the examples I've
seen show how to pass property values from the containing page's HTML to the
UserControl but nothing I've seen shows how to reference the UserControl's
properties (or subcontrols) from the containing page's server-side code.
Note that I'm not creating the UserControl prgrammatically via LoadControl -
I'm creating the UserControl declaratively in the page's HTML.

Thanks in advance for any help.

-Mark

I've been having the same problem. To work around it, I have some code
that iterates through the controls on the page looking for a control
with a particular id, so I have a function that iterates across
Page.Controls[1].Controls checking each control to see if it's id is
the desired one, and returning it when found. It's a really terrible
way to do things, but it seems to be a suitable placeholder until I
find out how it's supposed to be done.

-Iain
 
M

Mark Friedman

I discovered the answer to my own question. You just need to add a member
to your page behind class with the same name as the ID of the UserControl
and with a type of your UserControl, which is usually the same as the first
part of the UserControl's ascx file name. For example, if your UserControl
is defined in Foo.ascx and you place it in Bar.aspx as:

<uc1:Foo id="Foo1" runat="server"></uc1:Foo>

then in your code-behind page for Bar.aspx you just need to have:


Public Class Bar
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
...

' This must be put in manually, even though it ought to be done
automatically
' by VS.NET when you put the user control on the page, just like it
did for
' the button above
Protected Foo1 As Foo


Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As
System.EventArgs) Handles Button1.Click
Foo1.MyProperty = "Whatever"
End Sub
...

End Class

and then you can refer to the properties, etc. of the UserControl.

Not my comment above that I think that it's a bug that VS.NET doesn't
automatically put the member variable in there for you the way it does for
other server controls.

-Mark
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top