扩展图像上的Javascript问题

时间:2011-06-06 10:55:06

标签: javascript asp.net treeview toggle

我的TreeView出现问题。

My TreeView位于UserControl中。 在第一页上,UserControl直接放在内容页面上。一切正常。

示例(工作):

<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不起作用。

我发现的是,表格单元格的ID,放置的展开图像,与javascript所在的href不同。

示例(不工作):

<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中。因此,我的页面加载事件如下所示:

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

这就是混淆生成的javascript的原因。 但为什么? javascript中包含生成的客户端ID。是不是渲染的一部分(在PageLoad之后)?

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题所在:

在这种情况下,无法将TreeNodeCollection(或rootNode)存储在缓存中。

我想,缓存整个集合是一个聪明的主意,以节省构建层次结构的时间。但是如果我尝试将UserControl放在另一个页面中(在另一个容器中),生成的展开/折叠javascript就会混乱(客户端ID不正确)。

嗯,对于未来:

  • 缓存数据,构建TreeView,是的!是
  • 缓存rootNode,不!