MultiHandleSliderExtender和回发javascript问题

时间:2012-01-04 19:31:50

标签: javascript asp.net html ajax

我正在尝试使用multihandlesliderextender(来自Ajax Toolkit)在网上商店的价格上制作过滤器选项。当选择新价格时,它必须重新加载所有内容(并做很多幕后代码)。

我在这里使用这篇文章http://forums.asp.net/p/1397694/3022998.aspx作为灵感,主要的想法是使用JavaScript来进行回发。

运行我的页面时出现以下错误:“Microsoft JScript运行时错误:无法设置属性'Handle'的值:object为null或undefined”

我想这是因为JavaScript无法找到控件,但我不明白为什么它不起作用,因为我使用ClientIdMode来确保ID应该匹配(并查看生成的HTML它应该工作)。

谢谢!

我有以下标记:

 <asp:TextBox ID="txtSlider" runat="server" AutoPostBack="true" ></asp:TextBox>
        <asp:MultiHandleSliderExtender ID="MultiHandleSliderExtender1" BehaviorID="MultiHandleSliderExtender1"
            runat="server" TargetControlID="txtSlider" Length="120" TooltipText="{0}" OnClientDragEnd="ValueChangedHandler">
        <MultiHandleSliderTargets>
                <asp:MultiHandleSliderTarget ControlID="LeftHandle" />
<asp:MultiHandleSliderTarget ControlID="RightHandle" />

            </MultiHandleSliderTargets>

        </asp:MultiHandleSliderExtender>

        <br/><br/>
            <asp:TextBox ID="LeftHandle" runat="server" ClientIDMode="Static"></asp:TextBox>
            <asp:HiddenField ID="HiddenField1" runat="server" ClientIDMode="Static" />


<asp:Label ID="RightHandle" runat="server" ClientIDMode="Static"></asp:Label>
 <asp:HiddenField ID="HiddenField2" runat="server" ClientIDMode="Static" />


        <asp:Button ID="Button1" runat="server" Text="Button" 
    Style="display: none" onclick="Button1_Click" />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

在我的标题中包含以下JavaScript:

 <script type="text/javascript">

     function ValueChangedHandler(sender, args) {
         $get("HiddenField1").value = $get("LeftHandle").value;
         $get("HiddenField2").value = $get("RightHandle").value;
         __doPostBack("Button1", "Click");
     }

</script>

1 个答案:

答案 0 :(得分:0)

我通过更新page_load事件来解决这个问题,如下所示:

var controlId = Request.Form["__EVENTTARGET"];
            var control = Page.FindControl(controlId);

            if(control.ID == sliderTwo.ID)
            {
                SetupPriceFilter(p);
            }
            else if (control.ID == sliderAge.ID)
            {
                SetupAgeFilter( p);
            }