Hooking Up Slider Extender to Client-Side Code
Now that the RC for ASP.NET Ajax is out, we’re just around the bend from release. Thank goodness.
So I downloaded the RC and the control toolkit and started playing with the slider, since I would like to use it for a project. Unfortunately, it took me a while to figure out how to hook up clients-side javascript events to the slider. A forum post finally solved my problem. I figured I would share the solution.
Sys.Application.add_load(application_Load);
function application_Load() {
var behavior = $find('funkyBehaviorId');
//$find('funkyBehaviorId').add_valueChanged(function() { onDoSomething(); });
//$find('funkyBehaviorId').add_valueChanged(onDoSomething);
//$find('funkyBehaviorId').get_events().addHandler("valueChanged", onDoSomething);
//behavior.add_valueChanged(function() { onDoSomething(); });
//behavior.add_valueChanged(onDoSomething);
behavior.get_events().addHandler("valueChanged", onDoSomething);
}
function onDoSomething(sender, e) {
var div = $get('showMeSomething');
var textbox = $get('_sliderTarget');
div.innerHTML = "<b>" + textbox.value + "</b>";
}
<asp:Panel runat="server" ID="hi">
<asp:TextBox ID="_slider" runat="server" />
<toolkit:SliderExtender runat="server" TargetControlID="_slider" BehaviorID="funkyBehaviorId" ID="_sliderExtender" BoundControlID="_sliderTarget">
</toolkit:SliderExtender>
</asp:Panel>
<asp:TextBox runat="server" ID="_sliderTarget" />
<div id="showMeSomething"></div>
All of the lines in the application load method work. They are all just variations on the same theme. Use whatever style you like. Use the $find method to find the sliderextender based on its behavior id, and attach to some events. The key that I didn’t figure out for quite a while was to hook up to the slider extender via behavior id, not to its id or the id of the target. Once I found that out, everything went pretty smoothly.