Make a control Readonly using the controls Collection

G

Guest

Is it possible to iterate through all the controls collection and make the
textboxes alone as read only.I don't see a readonly property for the
Control.Can some one help me in this context?
I want to do something like this below.But I get a message Readonly is not
valid property.
foreach (Control ctl in pnlBenefits.Controls)
{
if (ctl is TextBox)
ctl.ReadOnly=false;
}
 
H

Hermit Dave

why dont you do a explicit typecast and then get its readonly property
foreach (Control ctl in pnlBenefits.Controls)
{
if (ctl is TextBox)
{
((TextBox)ctl).ReadOnly = false;
}
}

i think this should do the job
--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
 
G

Guest

Hi Hermit Dave,

Thanks for you response.
This time it didn't error me out, but none of my text boxes is set to
readonly.
My text boxes are declared using System.Web.UI.WebControls.TextBox,Is it
considered of Type TextBox too while using the Controls iteration.

Thanks
GP
 
J

John Saunders

GP said:
Is it possible to iterate through all the controls collection and make the
textboxes alone as read only.I don't see a readonly property for the
Control.Can some one help me in this context?
I want to do something like this below.But I get a message Readonly is not
valid property.
foreach (Control ctl in pnlBenefits.Controls)
{
if (ctl is TextBox)
{
TextBox txt = (TextBox) ctl;
txt.ReadOnly=false;
}
}
 
H

Hermit Dave

Yeap unless you have another control with the name TextBox it should map to
System.Web.UI.WebControls.TextBox

Get into Debug mode. put in a break point and see if its getting executed.
also try setting Enabled property to false.

--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
 
G

Guest

Thanks for your responses.
When I set to readonly it didn't work.Still I am able to edit the controls.
But when I set the control enabled=false.I see the text boxes disabled.
But I want the text box to be read only,so that I can get the values in the
viewstate.
foreach (Control ctl in pnlBenefits.Controls)
{
s= ctl.GetType().Name;
if (s == "TextBox")
{
((TextBox)ctl).ReadOnly = false;
}
}
}
Even I tried TextBox txt = (TextBox) ctl;
txt.ReadOnly=false;

Thanks
GP
 
H

Hermit Dave

i think it could be based on rendering of the textbox. at the end of the day
its the browser that acts on the html attribute in the element and makes it
readonly.
with enabled = false i think you cannot do anything with the instance. ie no
modifications cant even get the focus. you still have access to the object
and the viewstate etc from serverside. The enabled = false is only for
client side rendering.

--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
 
G

Guest

Thanks for you answer
Hermit Dave said:
i think it could be based on rendering of the textbox. at the end of the day
its the browser that acts on the html attribute in the element and makes it
readonly.
with enabled = false i think you cannot do anything with the instance. ie no
modifications cant even get the focus. you still have access to the object
and the viewstate etc from serverside. The enabled = false is only for
client side rendering.

--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
 
M

Matt Berther

Hello John,

This may work too...

foreach (TextBox tb in pnlBenefits.Controls)
{
tb.ReadOnly = false;
}
 
T

Tiësto

I've done it today with a client script. You can place this snippet at the
botton of the page or within a funcion you call when you want. You can write
it in the aspx file or render it exactly where you want.

this is a sample, hope it helps:

<script language="javascript">
<!--
var inputs = document.getElementsByTagName("INPUT");
var selects = document.getElementsByTagName("SELECT");

for (var i = 0;i<inputs.length;i++)
{
if ( (inputs.type == "text") && (inputs.disabled) )
{

inputs.disabled = false;
inputs.readOnly = true;
inputs.className = "Normal";
inputs.tabIndex = -1;

}
}

for (var i = 0;i<selects.length;i++)
{
selects.className = "Normal";
selects.tabIndex = -1;
selects[1].readOnly = true;
}
//-->
</script>
 

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,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top