$find(‹%= RadComboBox.ClientID %›) возвращает null после использования asp:button в качестве ControlID телерика:AjaxUpdatedControl

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

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


person Owen    schedule 12.11.2013    source источник


Ответы (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>

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

person Owen    schedule 12.11.2013