471,316 Members | 1,364 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,316 software developers and data experts.

Problem getting all controls from the current page

I am new to the .NET framework.

I know this has been discussed many times in this group. I also read
extensively here, however, I am in bad luck: none of the sample code
provided in this forum worked for me.

What I want to do is really simple.

I simply want to iterate through all controls of the current page and
create session objects for TextBoxes and CheckBoxes.

I tried this:

Sub CreateSessions()
Dim ctlObj As System.Web.UI.WebControls.WebControl
For Each ctlObj in Me.Controls
If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.TextBox" Then
Session(ctlObj.ToString()) = ctlObj.Text
End If

If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.CheckBox" Then
Session(ctlObj.ToString()) = ctlObj.Checked
End If
Next
End Sub

The error message I got:

Compiler Error Message: BC30456: 'Text' is not a member of
'System.Web.UI.WebControls.WebControl'.

Then what type should I assign to ctlObj? Thanks a lot!

Nov 19 '05 #1
4 1283
You should cast the WebControl to a TextBox. The Text property is not
available for a high level "WebControl". It is only provided by more
specialized inheritors such as the TextBox.

Also keep in mind that the controls are in a tree. You should recurse inside
each controls collection else you'll see only those who are at the very
first level.

You could time how much time it takes and see if it's worth depending on
what you are trying to do (especially if the forms doesn't contains any
dynamic control) you could just do something like :

MyControls=Array(Text1,Text2,DropDownList2)
CreateSessions(MyControls)

Or also :
- see if the control supports IPostBackDataHandler. This interface is
implemented by all controls that are able to post values (including also
dropdownlist etc...).
- still another way would be to browse the Request.Form collection that only
contains posted values (likely quicker)...

Post perhaps also about what you are trying to do...
--
Patrice

<an***********@yahoo.com> a écrit dans le message de
news:11*********************@g49g2000cwa.googlegro ups.com...
I am new to the .NET framework.

I know this has been discussed many times in this group. I also read
extensively here, however, I am in bad luck: none of the sample code
provided in this forum worked for me.

What I want to do is really simple.

I simply want to iterate through all controls of the current page and
create session objects for TextBoxes and CheckBoxes.

I tried this:

Sub CreateSessions()
Dim ctlObj As System.Web.UI.WebControls.WebControl
For Each ctlObj in Me.Controls
If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.TextBox" Then
Session(ctlObj.ToString()) = ctlObj.Text
End If

If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.CheckBox" Then
Session(ctlObj.ToString()) = ctlObj.Checked
End If
Next
End Sub

The error message I got:

Compiler Error Message: BC30456: 'Text' is not a member of
'System.Web.UI.WebControls.WebControl'.

Then what type should I assign to ctlObj? Thanks a lot!

Nov 19 '05 #2
Dim ctlObj As System.Web.UI.Control
For Each ctlObj In Me.Controls
If TypeOf ctlObj Is TextBox Then
Session(ctlObj.ToString()) = CType(ctlObj, TextBox).Text
ElseIf TypeOf ctlObj Is CheckBox Then
Session(ctlObj.ToString()) = CType(ctlObj, CheckBox).Checked
End If
Next

First, ctlObj should be of type Control not WebControl 'cuz you never know
what type of controls are gonna be in your page.

2nd, use typeof xx Is YY instead of the GetType().ToString()

finally, and the reason it isn't working, in order to access the Text
property of your textbox, you need to cast your ctlObj to a textbox. Even
though it's of type TextBox, it's actually a WebControl (Control in my
example) object, which doesn't have a TExt property

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/

<an***********@yahoo.com> wrote in message
news:11*********************@g49g2000cwa.googlegro ups.com...
I am new to the .NET framework.

I know this has been discussed many times in this group. I also read
extensively here, however, I am in bad luck: none of the sample code
provided in this forum worked for me.

What I want to do is really simple.

I simply want to iterate through all controls of the current page and
create session objects for TextBoxes and CheckBoxes.

I tried this:

Sub CreateSessions()
Dim ctlObj As System.Web.UI.WebControls.WebControl
For Each ctlObj in Me.Controls
If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.TextBox" Then
Session(ctlObj.ToString()) = ctlObj.Text
End If

If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.CheckBox" Then
Session(ctlObj.ToString()) = ctlObj.Checked
End If
Next
End Sub

The error message I got:

Compiler Error Message: BC30456: 'Text' is not a member of
'System.Web.UI.WebControls.WebControl'.

Then what type should I assign to ctlObj? Thanks a lot!

Nov 19 '05 #3
Hey, thank you very much for your great hint! Actually, Request.Form
sounds like what I want. I did not know about this before. But I think
I did Request.Form before in Java Servlets, so it sounds familiar to
me.

Thanks again. Let me try to figure out how to use Request.Form.

Patrice wrote:
You should cast the WebControl to a TextBox. The Text property is not
available for a high level "WebControl". It is only provided by more
specialized inheritors such as the TextBox.

Also keep in mind that the controls are in a tree. You should recurse inside
each controls collection else you'll see only those who are at the very
first level.

You could time how much time it takes and see if it's worth depending on
what you are trying to do (especially if the forms doesn't contains any
dynamic control) you could just do something like :

MyControls=Array(Text1,Text2,DropDownList2)
CreateSessions(MyControls)

Or also :
- see if the control supports IPostBackDataHandler. This interface is
implemented by all controls that are able to post values (including also
dropdownlist etc...).
- still another way would be to browse the Request.Form collection that only
contains posted values (likely quicker)...

Post perhaps also about what you are trying to do...
--
Patrice

<an***********@yahoo.com> a écrit dans le message de
news:11*********************@g49g2000cwa.googlegro ups.com...
I am new to the .NET framework.

I know this has been discussed many times in this group. I also read
extensively here, however, I am in bad luck: none of the sample code
provided in this forum worked for me.

What I want to do is really simple.

I simply want to iterate through all controls of the current page and
create session objects for TextBoxes and CheckBoxes.

I tried this:

Sub CreateSessions()
Dim ctlObj As System.Web.UI.WebControls.WebControl
For Each ctlObj in Me.Controls
If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.TextBox" Then
Session(ctlObj.ToString()) = ctlObj.Text
End If

If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.CheckBox" Then
Session(ctlObj.ToString()) = ctlObj.Checked
End If
Next
End Sub

The error message I got:

Compiler Error Message: BC30456: 'Text' is not a member of
'System.Web.UI.WebControls.WebControl'.

Then what type should I assign to ctlObj? Thanks a lot!


Nov 19 '05 #4
Hi, thanks a lot! It's been years since I last programmed in Java,
which does the same kind of casting type thing. You got the problem
corrected. Thanks again.

Karl Seguin wrote:
Dim ctlObj As System.Web.UI.Control
For Each ctlObj In Me.Controls
If TypeOf ctlObj Is TextBox Then
Session(ctlObj.ToString()) = CType(ctlObj, TextBox).Text
ElseIf TypeOf ctlObj Is CheckBox Then
Session(ctlObj.ToString()) = CType(ctlObj, CheckBox).Checked
End If
Next

First, ctlObj should be of type Control not WebControl 'cuz you never know
what type of controls are gonna be in your page.

2nd, use typeof xx Is YY instead of the GetType().ToString()

finally, and the reason it isn't working, in order to access the Text
property of your textbox, you need to cast your ctlObj to a textbox. Even
though it's of type TextBox, it's actually a WebControl (Control in my
example) object, which doesn't have a TExt property

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/

<an***********@yahoo.com> wrote in message
news:11*********************@g49g2000cwa.googlegro ups.com...
I am new to the .NET framework.

I know this has been discussed many times in this group. I also read
extensively here, however, I am in bad luck: none of the sample code
provided in this forum worked for me.

What I want to do is really simple.

I simply want to iterate through all controls of the current page and
create session objects for TextBoxes and CheckBoxes.

I tried this:

Sub CreateSessions()
Dim ctlObj As System.Web.UI.WebControls.WebControl
For Each ctlObj in Me.Controls
If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.TextBox" Then
Session(ctlObj.ToString()) = ctlObj.Text
End If

If ctlObj.GetType().ToString() =
"System.Web.UI.WebControls.CheckBox" Then
Session(ctlObj.ToString()) = ctlObj.Checked
End If
Next
End Sub

The error message I got:

Compiler Error Message: BC30456: 'Text' is not a member of
'System.Web.UI.WebControls.WebControl'.

Then what type should I assign to ctlObj? Thanks a lot!


Nov 19 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by José Joye | last post: by
4 posts views Thread by Bass Pro | last post: by
9 posts views Thread by rn5a | last post: by
5 posts views Thread by Brent | last post: by
5 posts views Thread by ThunderMusic | last post: by
reply views Thread by rosydwin | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.