Telerik-RadWindow,RadAjaxManager и IE9 аварийное приложение
Я использую Telerik control, там две страницы List и Detail page. Подробная страница открывает Radwindow. После закрытия radwindow, ajaxrequest обновляет сетку страницы списка (родительской страницы).
<telerik:RadWindowManager ID="RadWindowManager1" Height="665px" Width="1200px" runat="server"
Modal="true" Behaviors="Close,Move" VisibleStatusbar="false" Title="Add Service" DestroyOnClose="true">
<Windows>
<telerik:RadWindow ID="rdwAddService" runat="server" Title="Editing record" ReloadOnShow="true"
ShowContentDuringLoad="false" Modal="false" DestroyOnClose="true" />
</Windows>
</telerik:RadWindowManager>
</telerik:RadAjaxPanel>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest" RequestQueueSize="0">
<ClientEvents OnResponseEnd="responseEnd" />
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="grdTL" />
<telerik:AjaxUpdatedControl ControlID="grdTR" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
function RefreshGrid(SubServiceType) {
if (SubServiceType == "TR") {
$find("<%=RadAjaxManager1.ClientID%>").ajaxRequestWithTarget( '<%= btnRefreshTRGrid.UniqueID %>', '');
}
else if (SubServiceType = "TL") {
$find("<%=RadAjaxManager1.ClientID%>").ajaxRequestWithTarget( '<%= btnRefreshTLGrid.UniqueID %>', '');
}
}
**
Now problem is
In IE9,after opening/closing radwinow five-six times,
1)does not load radwindow again, like application hangout
2)Other button stops working
3)On refersh page, application hangout and need to close browser instance.
**
любая помощь будет оценена.
2 ответа
Я решил проблему сбоя браузера IE9.
Проблема в том, что я присоединяю событие закрытия radwindow к функции pageLoad(), поэтому каждая обратная передача, функция закрытия, прикрепленная (например, 4 раза) и вызываемая 4 раза и в сетке скриптов, обновляется, поэтому сетка 4 раз обновляется и вылетает из приложения.
incorrect
function pageLoad() {
GetRadWindow().add_close(CallFnOnParent);
}
Решение - использовать функцию Sys.Application.add_init, поэтому она прикрепляет событие закрытия только в первый раз и удаляет событие закрытия перед событием закрытия.
correct
Sys.Application.add_init(function () {
// Initialization code here, meant to run once.
GetRadWindow().add_close(CallFnOnParent);
});
Я бы посоветовал еще лучший подход - добавить обработчик на главной странице, так как именно здесь должна находиться функция. Затем вы можете просто установить его в разметке или при открытии всплывающего окна. Тогда удаление обработчика закрытия само по себе является отличным подходом. Что-то вроде:
function openRw(){
var wnd = radopen();
wnd.add_close(myCloseHandler);
}
function myCloseHandler(sender, args){
sender.remove_close(myCloseHandler);
//other code
}