0

我们在一个页面上使用了多个滑块扩展器,并且在其中一些上它有点跳过步骤。例如,一个滑块的最小值为 0,最大值为 10,steps 属性设置为 10。但是当你滑动它时,它总是跳过 5,所以你从 1-4 开始,然后跳过 5,然后 6-10 . 所以你永远不能选择5。

页面上的许多滑块也会发生同样的情况(即使它们具有不同的最小值、最大值和步长值)。

知道我们搞砸了什么吗?

ASP:

<p>
<span class="helpText">Number Music stream per hour</span>
<asp:HyperLink ID="lnkMusicStream" runat="server"></asp:HyperLink>
<span class="maptextimg">
    <img class="helpTxtImg" src="~/html/images/buttons/help_icon.png" alt="help" title="<%=getNoOfMusicStreamHelpText() %>" />
</span>
<span class="numbers">
    <asp:Label ID="lblMusicIntervals" runat="server" />
</span>
</p>
<p>
<span>
    <asp:TextBox ID="txtMusicStream" runat="server" AutoPostBack="true" />
    <span class="size">
        <asp:Label ID="lbltxtMusicStream" runat="server" /></span>
    <ajaxToolkit:SliderExtender ID="txtMusicStream_SliderExtender" runat="server" TargetControlID="txtMusicStream"
        BehaviorID="txtMusicStream" BoundControlID="lbltxtMusicStream" EnableKeyboard="true"
        TooltipText="{0}" HandleCssClass="handleBar" HandleImageUrl="~/html/images/buttons/handle.png">
    </ajaxToolkit:SliderExtender>
</span>
</p>

代码隐藏:

txtMusicStream_SliderExtender.Maximum = Sliders.GetSliderValues(SliderType.Streaming)["MaximumMusic"];
txtMusicStream_SliderExtender.Minimum = Sliders.GetSliderValues(SliderType.Streaming)["MinimumMusic"];
txtMusicStream_SliderExtender.Steps = int.Parse((txtMusicStream_SliderExtender.Maximum / Sliders.GetSliderValues(SliderType.Streaming)["MusicSteps"]).ToString());
txtMovieStream_SliderExtender.Steps = int.Parse((txtMovieStream_SliderExtender.Maximum / Sliders.GetSliderValues(SliderType.Streaming)["MovieSteps"]).ToString());
4

2 回答 2

3

我发现设置与“离散步骤”相关的步骤,它的实际含义有待明确定义(据我所知)。但是当滑块的最小值为 0 时,您需要在实际步数上加 1。

即:如果slider1.Max =5 和slider1.Min =0 和slider1.steps=5 那么值2 将被跳过以支持3。

如果我是对的,其背后的基本原理是它实际上将范围分成 2 个相等的部分,如果平均点是小数,它会将它四舍五入到更高的整数并跳转那个整数。

谢谢

于 2012-05-04T12:31:34.510 回答
1

请验证您是否获得了正确的值,包括“5”,因为您的代码看起来不错。

尝试在您的页面中使用这种简单的方法,如果这有效,那么您肯定错过了一些东西:

<cc1:SliderExtender ID="SliderExtender1" BoundControlID="slider1_display" Decimals="0"
     runat="server" TargetControlID="slider1" EnableHandleAnimation="true"
    TooltipText="{0}">
</cc1:SliderExtender>
<asp:TextBox ID="slider1" runat="server"></asp:TextBox>
<asp:Label ID="slider1_display" runat="server"></asp:Label>

代码背后:

SliderExtender1.Minimum = 0;
SliderExtender1.Maximum = 10;
于 2012-05-03T06:29:45.907 回答