Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net Web Controls (http://www.velocityreviews.com/forums/f63-asp-net-web-controls.html)
-   -   dynamic user control textbox is empty when accessing from aspx pag (http://www.velocityreviews.com/forums/t776524-dynamic-user-control-textbox-is-empty-when-accessing-from-aspx-pag.html)

randman 07-22-2005 06:25 PM

dynamic user control textbox is empty when accessing from aspx pag
 
I have created an ASPX page that has a placeholder that dynamically gets
assigned various user controls (that I have also created) during runtime. On
one of the user controls contains a textbox. I need to access the ascx page
textbox value from a sub routine in the aspx page.

This is the code that I have that returns the value of the textbox (named
txtName)

Public Property UserName() As String
Get
Return txtName.Text
End Get
Set(ByVal Value As String)
txtName.Text = Value.ToString
End Set
End Property

When I call this from my aspx page nothing is returned even though I have
typed something into the txtName textbox.

If I assign a value to the textbox, as in the following example, then the
value ("Hello") does appear in the aspx page that calls this code.

Public Property UserName() As String
Get
txtName.Text = "Hello"
Return txtName.Text
End Get
Set(ByVal Value As String)
txtName.Text = Value.ToString
End Set
End Property


The user control is called ranman.ascx

This is the code that dynamically assigns the user control to the aspx page

Session("strBody") = ranman
strControlBody = "controls\" & CStr(Session("strBody")) & ".ascx"
ctlBody = LoadControl(strControlBody)
phBody.Controls.Add(ctlBody)


This is the code on the aspx page that calls the user control

Dim myUserControl As ranman = CType(LoadControl("controls\ranman.ascx"),
ranman)

strUserName = myUserControl.UserName


It seems like a timing issue, but I could be wrong
I'm not even sure if I am on the right path with this. Please help !!

Thanks in advance,
Randman


Harolds 07-25-2005 05:53 PM

RE: dynamic user control textbox is empty when accessing from aspx pag
 
Your code creates a new control, so you are not trying to get the text box
value from the control in which you entered the data, but you are getting the
text box value from a brand new control of the same type.

I am not sure how to remedy your problem.
Try recreating your control in LoadViewState override, then in the postback
method do:
Dim myUserControl As ranman = FindControl(ControlID)
strUserName = myUserControl.UserName

Now what the controlid is I am not sure you will have to figure that out for
yourself.

That fact that you are using a dynamically created user control is what
makes this complicated.



"randman" wrote:

> I have created an ASPX page that has a placeholder that dynamically gets
> assigned various user controls (that I have also created) during runtime. On
> one of the user controls contains a textbox. I need to access the ascx page
> textbox value from a sub routine in the aspx page.
>
> This is the code that I have that returns the value of the textbox (named
> txtName)
>
> Public Property UserName() As String
> Get
> Return txtName.Text
> End Get
> Set(ByVal Value As String)
> txtName.Text = Value.ToString
> End Set
> End Property
>
> When I call this from my aspx page nothing is returned even though I have
> typed something into the txtName textbox.
>
> If I assign a value to the textbox, as in the following example, then the
> value ("Hello") does appear in the aspx page that calls this code.
>
> Public Property UserName() As String
> Get
> txtName.Text = "Hello"
> Return txtName.Text
> End Get
> Set(ByVal Value As String)
> txtName.Text = Value.ToString
> End Set
> End Property
>
>
> The user control is called ranman.ascx
>
> This is the code that dynamically assigns the user control to the aspx page
>
> Session("strBody") = ranman
> strControlBody = "controls\" & CStr(Session("strBody")) & ".ascx"
> ctlBody = LoadControl(strControlBody)
> phBody.Controls.Add(ctlBody)
>
>
> This is the code on the aspx page that calls the user control
>
> Dim myUserControl As ranman = CType(LoadControl("controls\ranman.ascx"),
> ranman)
>
> strUserName = myUserControl.UserName
>
>
> It seems like a timing issue, but I could be wrong
> I'm not even sure if I am on the right path with this. Please help !!
>
> Thanks in advance,
> Randman
>


randman 07-26-2005 02:44 PM

RE: dynamic user control textbox is empty when accessing from aspx
 
Thanks for your reply, your explanation has really helped me understand what
is taking place. I will investigate your suggestion of recreating the
control in then "LoadViewState override".

randman



"Harolds" wrote:

> Your code creates a new control, so you are not trying to get the text box
> value from the control in which you entered the data, but you are getting the
> text box value from a brand new control of the same type.
>
> I am not sure how to remedy your problem.
> Try recreating your control in LoadViewState override, then in the postback
> method do:
> Dim myUserControl As ranman = FindControl(ControlID)
> strUserName = myUserControl.UserName
>
> Now what the controlid is I am not sure you will have to figure that out for
> yourself.
>
> That fact that you are using a dynamically created user control is what
> makes this complicated.
>
>
>
> "randman" wrote:
>
> > I have created an ASPX page that has a placeholder that dynamically gets
> > assigned various user controls (that I have also created) during runtime. On
> > one of the user controls contains a textbox. I need to access the ascx page
> > textbox value from a sub routine in the aspx page.
> >
> > This is the code that I have that returns the value of the textbox (named
> > txtName)
> >
> > Public Property UserName() As String
> > Get
> > Return txtName.Text
> > End Get
> > Set(ByVal Value As String)
> > txtName.Text = Value.ToString
> > End Set
> > End Property
> >
> > When I call this from my aspx page nothing is returned even though I have
> > typed something into the txtName textbox.
> >
> > If I assign a value to the textbox, as in the following example, then the
> > value ("Hello") does appear in the aspx page that calls this code.
> >
> > Public Property UserName() As String
> > Get
> > txtName.Text = "Hello"
> > Return txtName.Text
> > End Get
> > Set(ByVal Value As String)
> > txtName.Text = Value.ToString
> > End Set
> > End Property
> >
> >
> > The user control is called ranman.ascx
> >
> > This is the code that dynamically assigns the user control to the aspx page
> >
> > Session("strBody") = ranman
> > strControlBody = "controls\" & CStr(Session("strBody")) & ".ascx"
> > ctlBody = LoadControl(strControlBody)
> > phBody.Controls.Add(ctlBody)
> >
> >
> > This is the code on the aspx page that calls the user control
> >
> > Dim myUserControl As ranman = CType(LoadControl("controls\ranman.ascx"),
> > ranman)
> >
> > strUserName = myUserControl.UserName
> >
> >
> > It seems like a timing issue, but I could be wrong
> > I'm not even sure if I am on the right path with this. Please help !!
> >
> > Thanks in advance,
> > Randman
> >


sam 07-26-2005 05:56 PM

Re: dynamic user control textbox is empty when accessing from aspx pag
 
Hi there,

Make sure you are adding the user control in the Init() method of the
aspx page. Then you should be able to get the text value in the Load()
method of the aspx page.



All times are GMT. The time now is 02:24 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.