$ 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>
Если кто-нибудь может дать мне вескую причину, почему это так, я с радостью отмечу это как ответ. В противном случае, я надеюсь, что это предотвращает разочарование для кого-то еще.