Итак, у меня есть RadPanelBar, и внутри него RadTreeView.На событии щелчка узла я хочу обновить некоторый элемент управления ... сейчас я просто пытаюсь обновить текстовое поле.Он работает нормально, за исключением того, что при первом нажатии на дочерний узел обновление элемента управления занимает очень много времени. Простое изменение текста.Я установил точку останова в своей функции и заметил, что для запуска события OnNodeClick требуется много времени. Если я щелкаю родительский узел в древовидной структуре, он отлично загружается при первом щелчке.Кроме того, после того, как я впервые щелкнул по нему ... он загружается быстро .. Если я обновляю страницу, то при первом щелчке он снова медленный .. Есть что-то, чего мне не хватает ... Не подходит ли структура моего HTML дляэти AJAX звонки?Я чувствую, что это действительно простой пример, который должен работать ..
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="IncidentReportPanel">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="IRViewPanel" LoadingPanelID="LoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
<telerik:RadAjaxLoadingPanel ID="LoadingPanel1" runat="server" Style="width: 320px;
padding-top: 125px;" Skin="Vista">
</telerik:RadAjaxLoadingPanel>
<table width="100%">
<tr style="height: 25px">
<td>
</td>
<td>
</td>
</tr>
<tr style="height: 100%">
<td style="width: 250px">
<telerik:RadPanelBar ID="IncidentReportPanel" runat="server" Height="450px" CssClass="IRPanel">
<Items>
<telerik:RadPanelItem runat="server" Text="Incident Reports" ImageUrl="./Images/folder.gif"
Value="IncidentReports">
<Items>
<telerik:RadPanelItem>
<ItemTemplate>
<telerik:RadTreeView ID="IncidentReportsTreeView" runat="server" OnNodeExpand="LoadTreeNodes"
OnNodeClick="PopulateIRData">
<Nodes>
<telerik:RadTreeNode Text="Pending" ExpandMode="ServerSideCallBack" ImageUrl="./Images/completed.gif">
</telerik:RadTreeNode>
<telerik:RadTreeNode Text="Completed" ExpandMode="ServerSideCallBack" ImageUrl="./Images/completed.gif">
</telerik:RadTreeNode>
</Nodes>
</telerik:RadTreeView>
</ItemTemplate>
</telerik:RadPanelItem>
</Items>
</telerik:RadPanelItem>
<telerik:RadPanelItem runat="server" Text="Calendar" ImageUrl="./Images/calendar.gif"
Value="Calendar">
<Items>
<telerik:RadPanelItem>
<ItemTemplate>
<telerik:RadCalendar runat="server" ID="IRCalendar" Width="100%" />
</ItemTemplate>
</telerik:RadPanelItem>
</Items>
</telerik:RadPanelItem>
</Items>
</telerik:RadPanelBar>
</td>
<td>
<asp:Panel ID="IRViewPanel" runat="server">
<telerik:RadTextBox ID="RadText" runat="server">
</telerik:RadTextBox>
</asp:Panel>
</td>
</tr>
</table>
protected void PopulateIRData(object sender, RadTreeNodeEventArgs e)
{
RadText.Text = "Hello, World!";
}
РЕДАКТИРОВАТЬ: я обновил свой код в соответствии с этой статьей, http://www.telerik.com/help/aspnet-ajax/ajax-client-side-performance.html,и проблема не исчезла ... опять же, это происходит только в первый раз ..
РЕДАКТИРОВАТЬ: Просто чтобы уточнить, обновляя в соответствии с этой статьей, я имею в виду, что я удалил все таблицы и относительные ширины и заменил их напозиционирование css и фиксированная ширина ... проблема возникает только в первый раз ... и это случается иногда ... довольно часто я думал, что решил проблему, так как она начала быстро реагировать ... но потом, после того как я изменил свои .aspx иизменить его обратно (даже на ту же самую вещь, когда он работал быстро) .. У меня та же проблема ..
РЕДАКТИРОВАТЬ: Итак, я удалил компонент AJAX .. и настроить элемент управления так, чтобы онPostBack ... и это все еще занимает много времени, чтобы достичь моей точки останова ... так что кажется, что это не проблема AJAX ... но по какой-то причине мои события требуют много времени ..
РЕДАКТИРОВАТЬ: ТакЕслиЯ воспользовался советом по этому посту, и я использовал веб-сервисы для выполнения привязки и обработки всего, что происходит на стороне клиента. Все было в порядке, пока я не решил, что хочу вернуть узлы из своего веб-сервиса, которые также можно расширить.в моем веб-сервисе я установил ExpandMode моего объекта RadTreeNodeData в Webservice ... и он корректно отображает данные, когда я расширяю дочерние узлы ... Однако теперь я вижу ту же проблему, что и раньше, когда некоторые вызовы занимают 20-30 секунд.20-30 секунд, чтобы даже достичь точки останова в моем веб-сервисе. Должен ли я вместо этого использовать событие OnClientNodeExpand?Я не понимаю, почему это так медленно!Любая помощь с благодарностью!