- - PR -
SliderExtenderについて
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-25 20:56
いつもお世話になっています。
環境:Visual Studio2005 ASP.NET C# AjaxControlToolkit-Release Date 2007/9/20 SliderExtenderについて質問です。 Sliderボタンを選択した時にJavaScriptを実行させてラベルを表示し、 ボタンを離したときにラベルを非表示にする処理を考えているんですが、 現状、TextBoxにonDragStartでラベルを表示、onchangeでラベルを非表示と 処理を作ってみたんですが、なぜかonDragStartが実行されなくてラベルを 表示することができません。 このやり方自体が間違っているのか、それともSliderBehavior.jsを 変更しないと実現できないのか? 分かる方いましたらご教授御願い致します。 <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <script type="text/javascript"> function dragstart(){ setVisibility("visible"); } function setVisibility(str) { var divTooltip = document.getElementById("tooltip"); if(divTooltip != null) divTooltip.style.visibility = str; } function pageChanged() { setTooltipVisibility("hidden"); return false; } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager2" runat="server" EnableScriptGlobalization="true" EnableScriptLocalization="true"> </asp:ScriptManager> <br /> <div id="tooltip" runat="server" style="visibility: hidden;"> <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label> </div> <asp:TextBox ID="txtSlider" runat="server" Width="180px" onDragStart="dragstart()" onchange="pageChanged()" AutoPostBack="true" Text="0"></asp:TextBox> <ajaxToolkit:SliderExtender ID="pageSlider" runat="server" TargetControlID="txtSlider" BoundControlID="Label4" Maximum="100" Minimum="1" BehaviorID="pageSlider"> </ajaxToolkit:SliderExtender> </div> </form> </body> </html> | ||||||||||||
|
投稿日時: 2007-09-26 00:13
これではテキストボックスのサーバ側のイベントとして登録されてしまいます。 Extender に対してのイベントは Javascript で記述してあげる必要があります。 #たぶんそのうち XML で定義できるようになる こんな感じで Extender のインスタンスを取得して、イベントの定義をしてあげる。
どんなイベントを Extender が持っているかはドキュメント化されていないので、ソースを読むか、AjaxClassBrowser などを使って調べる必要があります。 http://ajaxclassbrowser.utils.drundo.net/ _________________ かるあ のメモ http://karua.at.webry.info/ [ メッセージ編集済み 編集者: かるあ 編集日時 2007-09-26 00:17 ] | ||||||||||||
|
投稿日時: 2007-09-26 10:35
回答有難うございます。
Scriptの記述が間違っていたので訂正します。
上記のようにslideStartとslideEndの関数を作成して 呼び出すということであっていますか? add_slideEndの方はonchange実行時に呼ぶとして、 add_slideStartの方がどのイベントを使って呼び出せばいいのかが分かりません。 スライダーをクリックしたというイベントはどうやって取得すればいいのでしょうか? 宜しく御願い致します。 | ||||||||||||
|
投稿日時: 2007-09-26 12:46
違います。 ページのロード時に slideStart と slideEnd のイベントハンドラを登録します。 登録するのは クライアントの pageLoad か Sys.Application.load 時かな。(未検証) http://asp.net/AJAX/Documentation/Live/ClientReference/Sys/ApplicationClass/SysApplicationLoadEvent.aspx
なので、 onchange 時に呼ばれるのではなく、slider をつまんだ時に slideStart で登録した function() が呼ばれるし、話したときに slideEnd に登録した function() が呼ばれます。 _________________ かるあ のメモ と スニペット | ||||||||||||
|
投稿日時: 2007-09-26 13:02
こんな感じか pageLoad() として定義
Sys.Application.load に登録 ScriptManager より後で定義しないとスクリプトエラーになります。まぁ Script.RegisterStartupScript で書き出せば大丈夫か。
_________________ かるあ のメモ と スニペット | ||||||||||||
|
投稿日時: 2007-09-26 13:51
Sys.Application.loadで試してみて思ったとおりの動きになりました。
こういうやり方があるんですね〜勉強になります。 Script.RegisterStartupScriptでの書き出しかたは やった事がないのでちょっと調べて試してみます。 詳しく書いて頂いて有難うございました。 |
1