|
code
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
dynamic user control textbox is empty when accessing from aspx pagassigned 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 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. Show quoteHide quote "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 > 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 Show quoteHide quote "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 > > 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.
Base Page Design Question
Which page load fires first? ASPX or ASCX? style width and height ByVal sender As Object, ByVal e As EventArgs - can I send more? How to create HTML controls a runtime GridView EmptyDataTemplate Question Parsing nested Tags Left Side menu control Bizarre - DataGrid inside HTML Table Display items from dropdown list in alphabetical order |
|||||||||||||||||||||||