Client side scripting

  • Thread starter Thread starter Ben
  • Start date Start date
B

Ben

I want to enable/disable a text field cleint side based on a value in a
dropdownlist, what is the 'best'/'standard' approach for handling this in
..net?

I know i just just throw an on change attribute on the server controls tag,
but is that the 'right' way to do it?

Thanks,
Ben
 
If you want to do it with client side scripting

DropdownList.Attributes.Add("onchange", "yourscriptfordisabletextfield");
will do the job much fast than the server side
but if your page is not so big i would suggest you to do it on server side
with
if(DropDownList.SelectedIndex == 0)
TextBox1.Enabled = false;

Regards,
Martin
 
Sure, Ben. There are quite a few instances in ASP.Net where client-side
JavaScript is not only useful, but essential. In this case, I don't believe
it would have any adverse effects on the server-side.

--
HTH,
Kevin Spencer
..Net Developer
Microsoft MVP
Big things are made up
of lots of little things.
 
Hi Ben,

Since the ASP.NET server controls have their own serverside post back
events as well as clientside events, so it's ok to implement your task via
both serverside code or clientside script code. For example, you can
1. Do the enable/disable operation in the DropDownList's serverside
SelectIndexChange event

2. Or use its Attributes collection to register an "onchange" clientside
event handler for it to do the same operation.

The #1 use serverside code and can make use of the .net's class library,
but it need the page to postback everytime the dropdownlist has changed.
The #2 use clientside script so it needn't to post back and will avoid
round trip to the serverside which will be more effiecient. Anyway, which
to use all depends on your requirement and scenario.

Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

Get Preview at ASP.NET whidbey
http://msdn.microsoft.com/asp.net/whidbey/default.aspx
 
Thanks for the reply, I've decided to use client side scripting as
suggested, but I'm simply putting onchange="MyJsFunction" on the
dropdownlist tag. From your message I'm guessing the appropriate approach
to this is to use the attributes collection? Also, I used onload on the
body tag as well. Is this another spot where the attributes collection can
/ should be used?

Sorry to asking such basic questions, but I want to learn the 'right'
approach fron the start:)

Thanks,
Ben
 
Hi Ben,

Thanks for your followup. Well, let's focus on the client side scripting
for control in asp.net. In fact, we use the WebServer's Attributes
Collection to register clientside script handler is because ASP.NET
webserver control doesn't
support write clienside event handler inline in html source such as
<input type=button onclick="" />

Of course you can register a "onload" clienside event for page as
<body onload="..">

because <body > tag is an plain html element rather than server control. In
addition, if you still want the inline style client side event registering,
I think you can take a look at the ASP.NET 's HtmlServerControls, they're
more similar to the plain HTML element and we can register their clientside
events in Page's HTML source inline. Here is the reference in MSDN on the
ASP.NET HtmlServerControls:

#HTML Server Controls
http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconaspsyntaxforhtmlc
ontrols.asp?frame=true

#Adding HTML Server Controls to a Web Forms Page
http://msdn.microsoft.com/library/en-us/vbcon/html/vbtskAddingHTMLControlsTo
WebFormsPage.asp?frame=true

#The Forgotten Controls: HTML Server Contro
http://msdn.microsoft.com/library/en-us/dnaspp/html/ASPNet-ForgottenControls
..asp?frame=true

Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

Get Preview at ASP.NET whidbey
http://msdn.microsoft.com/asp.net/whidbey/default.aspx
 
Back
Top