【问题标题】:Telerik AJAX radComboBox. Getting SelectedValue from second comboBoxTelerik AJAX radComboBox。从第二个组合框获取 SelectedValue
【发布时间】:2011-12-24 07:22:55
【问题描述】:

我正在尝试从另一个结果中填充一个 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>

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?? 
}

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

标记

   <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>

jQuery

function OnClientSelectedIndexChanged(sender, eventArgs) {

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

C#

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

在我看来,这似乎绕过了回发问题,但它仍然不起作用。

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

【问题讨论】:

  • 你在哪里设置DataTextFieldDataValueField
  • 我没有明确设置它,因为它是按需加载的。我将它们添加为列表项,即 foreach(项目中的参考项目){ cbClient.Items.Add(new Telerik.Web.UI.RadComboBoxItem { Text = item.Description, Value = item.Value }); }
  • 听起来在您到达代码中的那个点之前,选择被覆盖并被新的列表项替换。

标签: jquery asp.net ajax combobox telerik


【解决方案1】:

您无法访问页面上的其他控件的原因是因为 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>            

背后的代码

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

希望这会有所帮助。

【讨论】:

  • 感谢@jdavies,但我认为它不起作用。OnClientItemsRequesting 为时过早,无法获得价值。我已将其更改为 OnClientSelectedIndexChanged 但上下文不可用。好像是这样的
  • 在我上面的例子中,OnClientItemsRequesting 函数与comboBox2 相关联。因此,应该已经从comboBox1 进行了任何选择(或者它会使用默认选定项)?我不知道你说的太早被解雇是什么意思,我错过了什么吗?
  • 对此表示歉意。我在错误的组合框上发生了事件。完美运行。谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多