dynamically writing property values to a control INSIDE of a user control?

G

Guest

I want to use codebehind to pass property values to a control that I've
embedded INSIDE of a user control.

In other words, let's say I have the following:

MyPage.aspx
....with the following control placed on it...
MyUserControl.ascx
.... and inside of MyUserControl.ascx, is an instance of ....
MyCommercialUploadControl1

I want to be able to write a property to the embedded commerical component:
MyCommercialUploadControl1.TargetFolder

I want to be able write this property programmatically from the aspx page
that originally called the instance of MyUserControl, as follows:

[from MyPage.aspx]
MyUserControl.TargetFolder = @"c:\whatever";

Failure #1: I attempted to add logic to the codebehind for my .ascx that
read the value of a property attached to itself, and then mapped that value
to the embedded commercial control, e.g.

MyCommercialUploadControl1.TargetFolder = this.TargetFolder
// "this" refers to the ascx instance

This did not work.

Failure #2: I experimented with various scenarios involving doing the
mappings onPreInit, thinking I might be running into a page lifecycle issue.
This did not work either.

I can successfully write properties to the user control iself, but I haven't
figured out how to write properties to controls INSIDE of the control. In
all cases the debugger indicates null values where i want my properties to
end up. Can anyone help?

Thank you.
-KF
 
C

Cowboy \(Gregory A. Beamer\)

In page, you should either embed the value in the HTML tags (ASP.NET tags)
or use Init (not Page Load) to set the value.

In the control, you can be a bit more lax and do not have to aim for Init(),
but it probably will not hurt you.
 
G

Guest

Ah, good, thank you so much. Writing Page_Init() method for the aspx page
indeed solved the problem, like this:

protected void Page_Init()
{
PictureUploaderAndProcessor1.PathVirtual =
"~/ni/apps/xxx/images/submitted/";
}

User controls seem so powerful in allowing you to build parameterized,
generic , reusuable functionality. It's too bad these little gotchas trip up
us newbies. I wonder if there's a way that the VS.NET IDE could cue you to
the right practices: maybe you could help it figure out intent with xml
markup or something.

Anyway, thank you very much. Now to finish my abstracted
uploading-and-image-resizing-and-cataloguing widget. ;)

-KF

Cowboy (Gregory A. Beamer) said:
In page, you should either embed the value in the HTML tags (ASP.NET tags)
or use Init (not Page Load) to set the value.

In the control, you can be a bit more lax and do not have to aim for
Init(), but it probably will not hurt you.


I want to use codebehind to pass property values to a control that I've
embedded INSIDE of a user control.

In other words, let's say I have the following:

MyPage.aspx
...with the following control placed on it...
MyUserControl.ascx
... and inside of MyUserControl.ascx, is an instance of ....
MyCommercialUploadControl1

I want to be able to write a property to the embedded commerical
component:
MyCommercialUploadControl1.TargetFolder

I want to be able write this property programmatically from the aspx page
that originally called the instance of MyUserControl, as follows:

[from MyPage.aspx]
MyUserControl.TargetFolder = @"c:\whatever";

Failure #1: I attempted to add logic to the codebehind for my .ascx that
read the value of a property attached to itself, and then mapped that
value to the embedded commercial control, e.g.

MyCommercialUploadControl1.TargetFolder = this.TargetFolder
// "this" refers to the ascx instance

This did not work.

Failure #2: I experimented with various scenarios involving doing the
mappings onPreInit, thinking I might be running into a page lifecycle
issue. This did not work either.

I can successfully write properties to the user control iself, but I
haven't figured out how to write properties to controls INSIDE of the
control. In all cases the debugger indicates null values where i want my
properties to end up. Can anyone help?

Thank you.
-KF
 

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

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,832
Latest member
GlennSmall

Latest Threads

Top