RadComboBox ClientSelectedIndexChanged没有触发

时间:2013-07-02 16:11:43

标签: telerik radcombobox

我有一个奇怪的行为组合框。

这是我的标记

<telerik:RadComboBox 
                runat="server" 
                id="rcbSite" 
                width="210px" 
                enableloadondemand="true"
                onclientitemsrequesting="rcbSite_OnClientItemsRequesting"
                showmoreresultsbox="True" 
                enablevirtualscrolling="True" >    
            <WebServiceSettings Method="GetSitesComboBoxDataByCustomerId" Path="/Services/ClientSideDataService.asmx" />
            </telerik:RadComboBox>

非常合理,comboBox与web服务绑定。

onItemsRequesting函数将一些额外的数据位添加到我们需要的comboBox上下文中。

function rcbSite_OnClientItemsRequesting(sender, eventArgs) {
        //Get the selected customer 
        var selectedCustomerId = $('#<%= CustomerDropDownId %> option:selected').attr('value');

        var context = eventArgs.get_context();

        //Set filter text
        context["FilterString"] = eventArgs.get_text();
        context["CustomerId"] = selectedCustomerId;
    }

在我的代码隐藏中,如果先前选择了一个项目,我会创建并选择一个项目。

if (siteId.HasValue)
{
    rcbSite.Items.Add(SiteManager.GetComboBoxItemBySiteId(siteId.Value));
    rcbSite.SelectedValue = siteId.Value.ToString();
}

最后在document.ready上我将selctedIndexChanged事件附加到comboBox

//Site Changed
Sys.Application.add_load(function(){

    //If the combo box has items in it, select the first one
    //Selecting first item client side ensures that address fields are refreshed when binding individual item to combo box on initial page load
    var combo = $find("<%= rcbSite.ClientID %>");
    if (combo.get_items().getItem(0)) {
        combo.trackChanges();
        combo.get_items().getItem(0).select();
        combo.commitChanges();
    } 

    $find("<%= rcbSite.ClientID %>").add_selectedIndexChanged(
    function (sender, eventArgs) {
        var item = eventArgs.get_item();

        var addressFormFields = new InventoryAddressFields("<%= ddlAddressType.ClientID %>", "<%= txtAttenTo.ClientID %>", "<%= txtAddress1.ClientID %>",
                                                       "<%= txtAddress2.ClientID %>", "<%= txtCity.ClientID %>", "<%= ddlCountry.ClientID %>",
                                                   "<%= ddlState.ClientID %>", "<%= ddlCounty.ClientID %>", "<%= txtPostalCode.ClientID %>",
                                                   "<%= txtPostalCodePlus4.ClientID %>", "<%= txtPhone.ClientID %>", "<%= txtFax.ClientID %>",
                                                   "<%= ddlTimezone.ClientID %>", "<%= chkObserveDST.ClientID %>", "<%= ddlVerificationStatus.ClientID %>");

        if (item) {
            var selectedSiteId = item.get_value();

            GetAddressBySiteId(addressFormFields, selectedSiteId);
        }
        else
        {
            clearAddressFields(addressFormFields);
        }
 }
 );
});

这是我的问题:

  1. 页面加载,其中一个项目插入到comboBox&amp;选择
  2. 点击进入comboBox&amp;点击退格
  3. 点击comboBox
  4. 预期: ComboBox触发selectedIndexChanged事件,因为我们现在没有选择项目

    实际值: 项目被删除而不会触发事件

    有趣的是,如果您单击该框并关闭而不删除项目。然后单击并删除它,事件正确触发。

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我现在有一个解决方法,似乎我想要的是comboBox不受支持的行为。