Javascript Проблема с расширением изображения - PullRequest
1 голос
/ 06 июня 2011

У меня проблема с моим TreeView.

Мой TreeView находится в UserControl.На первой странице UserControl размещается непосредственно на странице контента.Все работает finde.

пример (рабочий):

<a id="MainContent_CategoryTreeView1_TreeView1n209" href="javascript:TreeView_ToggleNode(MainContent_CategoryTreeView1_TreeView1_Data,209,MainContent_CategoryTreeView1_TreeView1n209,&#39; &#39;,MainContent_CategoryTreeView1_TreeView1n209Nodes)">
    <img src="demo.jpg" />
</a>

На второй странице UserControl помещается в TabContainer (TabPanel).Javascript для расширения не работает.

Я обнаружил, что идентификатор ячейки таблицы, в которую помещается развернутое изображение, отличается от href, в котором находится javascript.

пример (не работает):

<a id="MainContent_TabContainer_tbPbl_Categories_CategoryTreeView1_TreeView1n209" href="javascript:TreeView_ToggleNode(MainContent_CategoryTreeView1_TreeView1_Data,209,MainContent_CategoryTreeView1_TreeView1n209,&#39; &#39;,MainContent_CategoryTreeView1_TreeView1n209Nodes)">
    <img src="demo.jpg" />
</a>

Это ошибка ASP.Net TreeView?Любая идея, как решить эту проблему?

РЕДАКТИРОВАТЬ:

Может быть тоже интересно: всякий раз, когда TreeView загружается первым, я строю иерархию в коде и сохраняю rootNode в Cache.Итак, мое событие Page Load выглядит так:

if (CacheFacade.CategoryTreeView == null)
    var rootNode = BuildHierachy();
    CacheFacade.CategoryTreeView = rootNode;
    //databind rootNode to TreeView
else 
    //databind from CacheFacade.CategoryTreeView

Это то, что портит сгенерированный javascript.Но почему?В JavaScript есть сгенерированные идентификаторы клиентов.Разве это не часть рендеринга (после PageLoad)?

1 Ответ

1 голос
/ 06 июня 2011

Хорошо, я выяснил, в чем проблема:

В этом сценарии невозможно сохранить коллекцию TreeNodeCollection (или rootNode) в кэше.

Я думал, этобыла умная идея кэшировать всю коллекцию, чтобы сэкономить время на построение иерархии.Но если я попытаюсь разместить UserControl на другой странице (в другом контейнере), сгенерированный javascript развернуть / свернуть (неверные идентификаторы клиентов).

Хорошо, на будущее:

  • Кэшировать данные, на которых построено TreeView, да!
  • Кэшировать rootNode, нет!
...