Telerik AJAX radComboBox.从第二个comboBox获取SelectedValue

Cra*_*ket 3 asp.net ajax jquery combobox telerik

我试图从另一个的结果填充一个Telerik AJAX radComboBox

  1. comboBox1 - 自动填充和用户选择项目
  2. comboBox2 - 用户选择.按需加载.使用comboBox1中的选定值填充自身.

问题是我无法获得combobox1的选定值

标记

<telerik:RadComboBox ID="comboBox1" runat="server" 
                 EnableLoadOnDemand="True" 
                 MarkFirstMatch="False" 
                 onitemsrequested="comboBox1_ItemsRequested" >
            </telerik:RadComboBox>

   <telerik:RadComboBox ID="comboBox2" runat="server" 
                 EnableLoadOnDemand="True" 
                 MarkFirstMatch="False" 
                 onitemsrequested="comboBox2_ItemsRequested" >
            </telerik:RadComboBox>
Run Code Online (Sandbox Code Playgroud)

C#

protected void comboBox1_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
    //.. populate this combo
}

protected void comboBox2_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
    string test = comboBox1.SelectedValue;
    //.. test is empty. Why?? 
}
Run Code Online (Sandbox Code Playgroud)

令人沮丧的是,我无法获得所选的价值.问题可能是页面实际上没有回发(必须是问题的一部分),因此没有机会设置选定的值.所以我写了代码来解决这个问题

标记

   <telerik:RadComboBox ID="comboBox1" runat="server" 
                 EnableLoadOnDemand="True" 
                 MarkFirstMatch="False" 
                 onitemsrequested="comboBox1_ItemsRequested" 
  onclientselectedindexchanged="OnClientSelectedIndexChanged">
            </telerik:RadComboBox>
   <asp:HiddenField runat="server" ID="hidClientId" />

   <telerik:RadComboBox ID="comboBox2" runat="server" 
                 EnableLoadOnDemand="True" 
                 MarkFirstMatch="False" 

                 onitemsrequested="comboBox2_ItemsRequested" >
            </telerik:RadComboBox>
Run Code Online (Sandbox Code Playgroud)

JQuery的

function OnClientSelectedIndexChanged(sender, eventArgs) {

         var item = eventArgs.get_item();
        var value = item.get_value();
        $("[ID$='hidClientId']").val(value);
}
Run Code Online (Sandbox Code Playgroud)

C#

protected void comboBox2_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
    string test = hidClientId. Value;
    //.. test is empty. Why?? 
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这已经绕过了回发问题,但它仍然无效.

有谁知道如何从另一个获得一个radComboBox的值?任何帮助非常感谢

jda*_*ies 5

您无法访问页面上其他控件的原因是因为RadComboBox对项目执行异步请求,因此无法访问页面上的其他控件.

尝试处理OnClientItemsRequesting事件,利用上下文对象(传递给服务器端代码)来发送第一个组合的选定值.

标记

<telerik:RadCodeBlock ID="RadCodeBlock" runat="server">

    <script type="text/javascript">

        function OnClientItemsRequesting(sender, eventArgs) {

            var comboBox1 = $find('<%= comboBox1.ClientID %>');
            var value = comboBox1.get_value();

            var context = eventArgs.get_context();
            context["ComboBox1Value"] = value;
        }

    </script>

</telerik:RadCodeBlock>

<telerik:RadComboBox ID="comboBox1" runat="server" 
    MarkFirstMatch="False">
    <Items>
        <telerik:RadComboBoxItem Text="Item 1" Value="0" />
        <telerik:RadComboBoxItem Text="Item 2" Value="1" />
    </Items>
</telerik:RadComboBox>

<telerik:RadComboBox ID="comboBox2" runat="server" 
            EnableLoadOnDemand="True" 
            MarkFirstMatch="False" 
            onitemsrequested="comboBox2_ItemsRequested"
            OnClientItemsRequesting="OnClientItemsRequesting">
</telerik:RadComboBox>            
Run Code Online (Sandbox Code Playgroud)

代码背后

protected void comboBox2_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
    string selectedValue = e.Context["ComboBox1Value"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 为此道歉.我在错误的comboBox上发生了这个事件.工作得很好.感谢那 (2认同)