Telerik RadComboBox Javascript API проблема - PullRequest
3 голосов
/ 02 декабря 2009

У меня возникли проблемы при использовании API JavaScript RadComboBox от Telerik. И нет, у меня нет возможности переключаться с Telerik на jQuery или другой фреймворк. Достаточно сказать, что у меня почти не осталось волос на голове: P

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

Я следовал документации по 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 ]

4 голосов
/ 07 декабря 2009

Большое спасибо Веселину Васильеву и Стефпету за их вклад. После многих часов отладки 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();
    }

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

3 голосов
/ 06 декабря 2009

Вы используете клиентский 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 голосов
/ 02 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...