2012-01-04 2 views
0

Я использую multihandlesliderextender (из Ajax Toolkit), чтобы сделать опцию фильтра по цене в интернет-магазине. Когда выбрана новая цена, она должна перезагрузить все (и сделать много за кулисами).Вопросы, относящиеся к MultiHandleSliderExtender и postback javascript

Я использовал эту статью здесь http://forums.asp.net/p/1397694/3022998.aspx как вдохновение, а основной идеей является использование JavaScript для обратной передачи.

У меня есть следующая ошибка при запуске моей страницы: «Ошибка выполнения Microsoft JScript: невозможно установить значение свойства« Handle »: объект имеет значение null или undefined».

Я думаю, это связано с тем, что JavaScript не может найти элемент управления, но я не понимаю, почему он не работает, поскольку я использую ClientIdMode, чтобы убедиться, что идентификатор должен соответствовать (и поиск в сгенерированном 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> 

ответ

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); 
      } 
Смежные вопросы