2009-12-02 91 views
3

我一直在使用Telerik的RadComboBox的JavaScript API的问题。不,我没有权力从Telerik切换到jQuery或其他框架..只需说我现在几乎没有任何头发留在我的头上:PTelerik RadComboBox JavaScript API问题

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

I已经在此页面(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

非常感谢韦塞林·瓦西列夫和stefpet。经过数小时的js调试和同样的一杯咖啡,我确实得到了这个与IE8和FF3.5的工作。

用于更新并行RadComboBoxes(响应OnClientSelectedIndexChanged事件)正确的javascript事件处理程序:

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

我希望它是那样的。不幸的是,由于组合框是用于输入数据以及选择它这不是 radcombobox控件输出一个表,大量的div,并且像这样的选项的情况下:一位两等。 – Grubl3r 2009-12-02 13:31:29

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

+0

万分感谢您的链接韦塞林,这确实是正确的文档! – Grubl3r 2009-12-06 23:17:15

+1

BTW在我的版本的“set_selectedIndex()” js函数不上radcombobox控件对象的方式存在。 – Grubl3r 2009-12-20 14:34:57