0

.Net 4.0 Telerik RadControls for ASP.NET Ajax 版本:2013.3.1015.40

在通过 asp:button 调用服务器方法后,我正在使用 telerik:RadAjaxManager 更新 RadGrid 和 RadComboBox。加载网格后,它会调用下面的 javascript,这是检查客户端是否有任何复选框的函数片段。如果我使用 asp:button 作为 AjaxControlID 来更新 RadComboBox,则该方法会更新组合框,但 var ddl 返回 null 并且我收到错误“Uncaught TypeError: Cannot call method 'get_items' of null”。但是,如果我通过更新 RadGrid 的 OnNeedDataSource 事件更新 RadComboBox,则会得到相反的结果。RadComboBox 不会更新,即使该方法已运行,但 ddl 会按预期填充并且 javascript 方法可以运行。

function GridLoaded(sender, args) {
    var ddl = $find("<%= RadComboBox.ClientID %>");
    var items = ddl.get_items();
    ...
}

评估为:

function GridLoaded(sender, args) {
    var ddl = $find("ctl00_PrimaryContent_RadComboBox");
    var items = ddl.get_items();
    ...
}

我已经尝试根据许多其他提出的解决方案将javascript部分封装在RadCodeBlock和RadScriptBlock中,但没有任何改进。

此功能在单独的页面上运行,唯一的区别是从一个 RadGrid 的 OnSelectedIndexChanged 调用 ComboBox 以更新另一个 RadGrid。

我在这里检查过没有解决方案。 telerik RadComboBox 发现返回 null - 为什么?

4

1 回答 1

0

我终于想通了这个让它工作。

显然,RadAjaxManager 也希望更新 ComboBox 以使所有内容都能协同工作。

<telerik:RadAjaxManager ID="RadAjaxManager" runat="server" UpdatePanelsRenderMode="Inline">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadComboBox" />
                <telerik:AjaxUpdatedControl ControlID="RadGrid" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    ...
    </AjaxSettings>
</telerik:RadAjaxManager>

如果有人能给我一个可信的理由来说明为什么会这样,我很乐意将其标记为答案。否则,我希望这可以防止其他人感到沮丧。

于 2013-11-12T23:40:33.443 回答