Telerik RadComboBox javascript API问题

时间:2009-12-02 12:07:05

标签: asp.net javascript telerik

我在使用Telerik的RadComboBox的javascript API时遇到了问题。不,我没有权力从Telerik切换到jQuery或其他框架。我只想说我现在几乎没有留下任何头发:P

简而言之我想获取一个RadComboBox的选定索引,并将另一个RadComboBox更新为此索引。例如。在第一个RCB中选择一个值会自动更新客户端的第二个值。我的问题实际上是我找不到在第二个RCB上设置索引的方法,即使文档说有一个简单的方法可以做到这一点..(你之前听说过一个吧:)

我已经在此页面(telerik docs)上关注了API文档,并且还使用了IE8中的javascript调试程序和Firefox中的优秀FireBug。我正在使用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 个答案:

答案 0 :(得分:4)

非常感谢Veselin Vasilev和stefpet的投入。经过几个小时的调试和同样的咖啡,我确实让它与IE8和FF3.5一起工作。

用于更新并行RadComboBoxes的正确javascript事件处理程序(响应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();
    }

当然可以通过在一行上进行多次调用来缩短这一点。我认为可能有一种方法可以用更少的代码来做到这一点,但我尝试了所有的东西,这是唯一对我有用的解决方案。

答案 1 :(得分:3)

您正在使用“经典”RadComboBox的客户端API,而组合版本则适用于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

答案 2 :(得分:-2)

我没有使用Telerik的经验,但鉴于实际呈现的是包含选项元素的标准选择列表,您可以通过将选项的选定属性设置为true来以编程方式选择选项。

相关问题