$ find ("<% = RadComboBox.ClientID%>") возвращает значение null после использования кнопки asp: в качестве ControlID для telerik:AjaxUpdatedControl

.Net 4.0 Telerik RadControls для ASP.NET Ajax версия: 2013.3.1015.40

Я использую telerik:RadAjaxManager для обновления RadGrid и RadComboBox после вызова метода сервера с помощью кнопки asp:. После того, как сетка загружена, она вызывает приведенный ниже javascript, который является фрагментом функции, которая проверяет наличие флажков на стороне клиента. Если я использую кнопку asp: в качестве AjaxControlID для обновления RadComboBox, метод обновляет комбинированный список, но var ddl возвращает ноль, и я получаю ошибку "Uncaught TypeError: Невозможно вызвать метод" get_items "из ноль". Однако, если я обновляю RadComboBox через событие OnNeedDataSource обновления RadGrid, я получаю обратное. 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 на основе многочисленных других представленных решений без каких-либо улучшений.

Эта функция работает на отдельной странице, единственное отличие состоит в том, что ComboBox вызывается из OnSelectedIndexChanged из одного RadGrid для обновления другого RadGrid.

Я проверил здесь без решения. telerik RadComboBox find Возвращает null - почему?

1 ответ

Решение

Я наконец понял, что это получилось.

По-видимому, 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>

Если кто-нибудь может дать мне вескую причину, почему это так, я с радостью отмечу это как ответ. В противном случае, я надеюсь, что это предотвращает разочарование для кого-то еще.

Другие вопросы по тегам