Не может найти Radajaxmanager при использовании внутри пользовательского контроля
У меня возникла проблема с удалением записи с RadAjaxManager.
Ошибка типа: ajaxManager является нулем.
Это мой код:
Default.aspx:
<asp:Content ID="Content3" ContentPlaceHolderID="a1" runat="server">
<uc1:ucMyUser runat="server" ID="ucMyUser"/>
</asp:Content>
ucMyUser:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<telerik:RadAjaxManager ID="RadAjaxManager2" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager2">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Grid1" UpdatePanelCssClass="" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadGrid ID="rgEmpCategory" runat="server">
<Columns>
---Rest other columns and configurations
<asp:ImageButton runat="server" ID="Remove" Text="Remove" ToolTip="Remove" CommandArgument='<%#Eval("ID")%>' OnClick="Remove_Click" OnClientClick='<%# Eval("ID", "javascript:return Remove(\"{0}\");") %>' />
</Columns>
Мастер страница:
function Remove(val) {
var Value= 'Remove';
var ajaxManager = $find("ctl00_cphMain_RadAjaxManager2");
var arg = Value + "," + val; //Remove,1(1 indicates Id here)
ajaxManager.ajaxRequest(arg);
}
Примечание. Этот скрипт находится на моей главной странице, поэтому я не могу использовать его так:
var ajaxManager = $find("<%= RadAjaxManager2.ClientID %>");
1 ответ
НЕ оборачивайте RadAjaxManager в UpdatePanel или что-либо в этом роде
переместите RadAjaxManager на свою главную страницу, это где он принадлежит
используйте элементы управления RadAjaxManagerProxy или RadAjaxPanel в ваших пользовательских элементах управления
Я также вижу, что вы нашли правильный способ ссылки на RadAjaxManager на клиенте через пользовательские блоки кода сервера
Прочтите эту статью о том, как сделать JS-функции уникальными для всех экземпляров UC, чтобы вы могли инкапсулировать их: http://www.telerik.com/support/kb/aspnet-ajax/details/using-dynamic-unique-names-for-javascript-functions