.NET在WebForm里实现类似WinForm里面TrackBar控件的效果(AJAX Control Toolkit的使用)

  WinForm 里面有一个 TrackBar 控件,表示一个标准的 Windows 跟踪条,是类似于 ScrollBar 控件的可滚动控件。用这个控件可以实现很多可以实时调整的功能,比如最常见的音量调节,播放进度调节等,很方便。但是,在 WebForm 里面没有类似的控件。那么在 WebForm 里要实现这样的功能怎么办呢?

  这里介绍一种简单高效的方法。其实就是使用 AJAX Control Toolkit 里面的 SliderExtender 控件。

  要想在 VS 里使用 AJAX Control Toolkit 的控件,最简单的方法是在项目里添加引用。首先,要获得 AjaxControlToolkit.dll 和 AjaxControlToolkit.pdb。然后在工具栏中新添加一个选项卡起名:AjaxControltoolkit,在这个选项卡上右键选择项->浏览找到 AjaxControlToolkit.dll,添加进来。这样就把 AJAX Control Toolkit 控件成功引用到 VS 中了。接下来就可以像使用其他工具栏中的控件一样使用 AJAX Control Toolkit 的控件了。

  AJAX Control Toolkit 控件里面有个 ToolkitScriptManager,要使用其他控件前先要添加这个,而且必须放在所有 AJAX Control Toolkit 控件的前面。具体使用SliderExtender 控件的方法见代码。

  前台代码:  

 1 <ajaxToolkit:ToolkitScriptManager id="ScriptManager1" runat="server" EnablePartialRendering="true" />
 2 <table>
 3   <tr>
 4     <td style="width: 140px;">
 5       <asp:TextBox ID="Slider1" runat="server" AutoPostBack="true" Style="right: 0px" Text="0" />
 6        </td>
 7        <td style="width: 15px">
 8        </td>
 9        <td style="width: auto">
10          <asp:Label ID="Slider1_BoundControl" runat="server" Style="text-align: right" />
11        </td>
12   </tr>
13   <tr>
14     <td colspan="3">
15          <div style="padding-top: 10px; text-align: center">
16             <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="conditional">
17           <ContentTemplate>
18                    <asp:Label ID="lblUpdateDate" runat="server" Style="font-size: 80%;" Text="&nbsp;" />
19                  </ContentTemplate>
20                  <Triggers>
21                    <asp:AsyncPostBackTrigger ControlID="Slider1" EventName="TextChanged" />
22                  </Triggers>
23         </asp:UpdatePanel>
24       </div>
25     </td>
26   </tr>
27 </table>
28 <ajaxToolkit:SliderExtender ID="SliderExtender1" runat="server" BehaviorID="Slider1"
29   TargetControlID="Slider1" Minimum="-100" Maximum="100" BoundControlID="Slider1_BoundControl"
30   Steps="200" />

 

  后台代码:

1         protected void Page_Load(object sender, EventArgs e)
2         {            
3             ScriptManager1.RegisterAsyncPostBackControl(Slider1);
4 
5             if (Page.IsPostBack)
6             {
7                 lblUpdateDate.Text = "Changed at: " + DateTime.Now.ToLongTimeString();
8             }
9         }

  效果截图:

    

 

posted @ 2013-12-26 21:35  彦影  阅读(1329)  评论(0编辑  收藏  举报