始终触发Telerik控制事件

时间:2013-08-12 18:42:02

标签: telerik radcombobox radajaxmanager

我正在使用Telerik组合框创建级联多选下拉列表。

我在页面ddlProject,ddlUnit,ddlDiscipline,ddlDocType上有几个下拉列表。

我正在使用Telerik RadAjaxManager来触发控件的更新,其标记如下:

<telerik:RadAjaxManager ID="ajaxManager" runat="server" DefaultLoadingPanelID="lpnlLoading" >
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="ddlProject" EventName="TextChanged">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="ddlUnit" UpdatePanelRenderMode="Inline"/>
                    <telerik:AjaxUpdatedControl ControlID="ddlDiscipline" UpdatePanelRenderMode="Inline" />
                    <telerik:AjaxUpdatedControl ControlID="ddlDocType" UpdatePanelRenderMode="Inline" />
                    <telerik:AjaxUpdatedControl ControlID="ddlPhase" UpdatePanelRenderMode="Inline" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="ddlUnit" EventName="TextChanged" >
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="ddlDocType" UpdatePanelRenderMode="Inline"  />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="ddlDiscipline" EventName="TextChanged">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="ddlDocType" UpdatePanelRenderMode="Inline" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>

ddlProject更新ddlUnit,ddlDiscipline和ddlDocType。

ddlUnit和ddlDiscipline仅用于更新ddlDocType,但我发现当更改其中任何一个控件时会触发TextChanged事件。

我已经尝试注释掉Ajax管理器以查看是否正在调用ddlProject_TextChanged而不是,只有当Ajax Manager在页面上时才会被调用。我希望启用Ajax Manager来抑制页面回发,并且它会为每个梳子盒显示一个加载面板,我认为这样可以显示加载时的良好用户体验。

所有这些都在用户控件中,因为我想在多个页面上使用它。

有人可以请求帮助解决方案,以便在更改单位和纪律时停止触发ddlProject_TextChanged吗?

提前致谢

安迪

修改

我刚刚发现它可能不是AjaxManager。每次页面回发时,控件事件似乎都会被触发。我还有一个标准的ASP.NET按钮,它在点击时不会数据绑定到任何复选框,它只是处理用户控件中的选定值。它甚至在包含组合框的用户控件外部。

组合框结构:

<telerik:RadComboBox ID="ddlUnit" runat="server" CheckBoxes="true" EnableCheckAllItemsCheckBox="true" 
   MaxHeight="450px" Width="300px" DataTextField="Value" DataValueField="Key" Label="Unit:" 
   LabelCssClass="HeaderLabel" DropDownWidth="600px" Height="400px"
   AutoPostBack="true" OnTextChanged="ddlUnit_TextChanged">
</telerik:RadComboBox>

TextChanged事件

protected void ddlDiscipline_TextChanged(object sender, EventArgs e)
        {
            CTRmDataService ctrmDS = new CTRmDataService();

            this.ddlDocType.DataSource = ctrmDS.GetDocumentTypesForProjectsDisciplineAndUnit(GetSelectedProjects(), 
                                                                                             GetSelectedDisciplines(), 
                                                                                             GetSelectedUnits(), 
                                                                                             LoggedOnUser.Id);
            this.ddlDocType.DataBind();
        }

2 个答案:

答案 0 :(得分:0)

我刚收到Telerik的通知,这是一个错误,已经传递给他们的开发团队。

不一定是一个有效的答案,但解释了我遇到问题的原因。

答案 1 :(得分:0)

不确定这会有什么帮助,但在我们的实例中,问题归结为IIS服务器缓存对Telerik控件有负面影响的内容。当我们将web.config设置从debug="true"切换到debug="false"时,这一点才变得明显,因为这样就允许IIS启用其缓存和其他相关优化,由于某种原因在浏览器中关闭所有缓存仍然破坏了控件,但是在IIS中将其关闭或将其重新调回调试模式解决了它。