2009-12-02 2 views
3

У меня возникла проблема с использованием API-интерфейса Javascript для RadComboBox от Telerik. И ни я не в силах переключиться от Telerik к JQuery или другой основы .. Достаточно сказать, что у меня почти не осталось волос на моей голове сейчас: PПроблема API-интерфейса API-интерфейса Telicik RadComboBox

В двух словах я хочу, чтобы захватить выбранный индекс одного RadComboBox и обновить другой RadComboBox до этого индекса. Например. выбор значения в первом RCB автоматически обновляет второй на стороне клиента. Моя проблема в том, что я не могу найти способ установить индекс на втором RCB, даже если документы говорят, что есть простой способ сделать это. (Вы слышали, что один перед правильным :)

I 've следил за документами API на этой странице (telerik docs), а также использовал отладчик javascript в IE8 и отличный FireBug в Firefox. Я использую версию сборки Telerik.Web.UI 2009.2.826.20

Мне не нужен полный источник для решения, но толчок в правильном направлении был бы очень признателен! :)

Вот пример кода я приготовленная вместе:


<form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" /> 

    <script type="text/javascript" language="javascript"> 
     function masterChanged(item) 
     { 
      var detailCB = <%= DetailCB.ClientID %>; 

      var index = item.get_selectedIndex(); 
      detailCB.SetSelected(index);    //method does not exist, but should according to the docs.. 

     } 
    </script> 

    <div> 
     <telerik:RadComboBox ID="MasterCB" runat="server" OnClientSelectedIndexChanged="masterChanged"> 
      <Items> 
       <telerik:RadComboBoxItem Text="One" Value="1" runat="server" />     
       <telerik:RadComboBoxItem Text="Two" Value="2" runat="server" /> 
       <telerik:RadComboBoxItem Text="Three" Value="3" runat="server" /> 
      </Items> 
     </telerik:RadComboBox> 
    </div> 

    <div> 
     <telerik:RadComboBox ID="DetailCB" runat="server"> 
      <Items> 
       <telerik:RadComboBoxItem Text="One" Value="1" runat="server" />     
       <telerik:RadComboBoxItem Text="Two" Value="2" runat="server" /> 
       <telerik:RadComboBoxItem Text="Three" Value="3" runat="server" /> 
      </Items> 
     </telerik:RadComboBox> 
    </div> 
</form> 

мне не нужен полный источник для решения, но удар в правильном направлении будет высоко ценится! :)

ответ

3

Большое спасибо Веселин Василев и stefpet для их ввода. После слишком много часов отладки js и чашек кофе я получил это, чтобы работать с IE8 и FF3.5.

Правильный Javascript обработчик событий для обновления параллельных RadComboBoxes (ответ на OnClientSelectedIndexChanged события):

function masterChanged(sender, e) 
    { 
     var detailCB = $find("<%= DetailCB.ClientID %>"); 

     var item = e.get_item(); 
     var index = item.get_index();    //get selectedIndex in master 
     var allDetailItems = detailCB.get_items(); 
     var itemAtIndex = allDetailItems.getItem(index); //get item in detailCB 
     itemAtIndex.select(); 
    } 

Это, конечно, может быть сокращено путем выполнения нескольких вызовов на одной линии. Я понимаю, что может быть способ сделать это с меньшим количеством кода, но я пробовал практически все, и это единственное решение, которое сработало для меня.

-2

У меня нет опыта работы с Telerik, но с учетом того, что на самом деле отображается, является стандартным списком выбора, содержащим элементы опций, которые вы можете выбрать программно, установив для параметра значение в true.

+1

Желаю, чтобы это было так. К сожалению, поскольку comboboxes предназначены для ввода данных, а также для его выбора, это не так. RadComboBox выводит таблицу, множество разделов и следующие параметры:

  • One
  • Два
  • и т. д. – Grubl3r

    3

    Вы используете клиентский API «классического» RadComboBox, в то время как версия комбо предназначена для ASP.NET AJAX. Вот как ваш метод должен выглядеть следующим образом:

    function masterChanged(item) 
    { 
        var detailCB = $find("<%= DetailCB.ClientID %>"); 
    
        var index = item.get_selectedIndex(); 
        detailCB.set_selectedIndex(index);    
    } 
    

    Вот собственно ссылка в документации: http://www.telerik.com/help/aspnet-ajax/combo_clientsidebasics.html

    +0

    Тысяча благодарностей за ссылку Веселин, это были действительно правильные документы! – Grubl3r

    +1

    Кстати, в моей версии функция «set_selectedIndex() js не существует на объектах RadComboBox. – Grubl3r

    Смежные вопросы