首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

TreeView作页面导航时关于修改TreeNode属性的疑惑

2013-01-19 
TreeView做页面导航时关于修改TreeNode属性的疑惑?本帖最后由 gutar0000 于 2013-01-14 19:23:51 编辑用Tr

TreeView做页面导航时关于修改TreeNode属性的疑惑?
本帖最后由 gutar0000 于 2013-01-14 19:23:51 编辑 用TreeView绑定SiteMapDataSource做网页导航,发现TreeNode的SelectAction属性默认为None,就想把它
改成Expand,可是问题出现了,无论我把修改SelectAction属性放在 Page_Load 还是Page_PreRender里面都
不行,测试发现TreeView的Nodes.Count=0,但是我在页面中加一个Button,点击Button后TreeNode的SelectAction属性修改了,不解求大家指点。

Web.sitemap的代码:


<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
    <siteMapNode url="~/SendMsg.aspx" title="首页"  description="">
      <siteMapNode url="" title="节点1.1"  description=""></siteMapNode>
      <siteMapNode url="" title="节点1.2" description=""></siteMapNode>
      <siteMapNode url="" title="节点1.3"  description="">
        <siteMapNode url="" title="节点1.3.1" description=""/>
        <siteMapNode url="" title="节点1.3.2" description=""/>
        <siteMapNode url="" title="节点1.3.3" description=""/>
        <siteMapNode url="" title="节点1.3.4" description=""/>
      </siteMapNode>
      <siteMapNode url="" title="节点1.4" description="" >
        <siteMapNode url="" title="节点1.4.1" description="" />
        <siteMapNode url="" title="节点1.4.2" description=""/>
      </siteMapNode>
    </siteMapNode>

</siteMap>


TreeView代码:

            <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" StartingNodeOffset="0" />
            <asp:TreeView ID="menuleft"
              runat="server"
              NodeIndent="0"
              DataSourceID="SiteMapDataSource1"
              ShowLines="false"
              NodeWrap="false"
              ShowExpandCollapse="true">
             </asp:TreeView>


Page_Load和 Page_PreRender 的代码:

        protected void Page_PreRender(object sender, EventArgs e)
        {
            foreach (TreeNode node in menuleft.Nodes)//menuleft为上面定义的TreeView
            {
                Travel(node);  //递归遍历
            }



        }
        protected void Page_Load(object sender, EventArgs e)
        {
                foreach (TreeNode node in menuleft.Nodes)
                {
                    Travel(node);
                }
        }
        public void Travel(TreeNode node)
        {
            if (node.ChildNodes.Count == 0)
                return;
            else if (node.Parent == null)
            {
                foreach (TreeNode n in node.ChildNodes)
                {
                    Travel(n);
                }
                return;
            }
            else
            {
                node.SelectAction = TreeNodeSelectAction.Expand;  //更改TreeNode属性
                foreach (TreeNode n in node.ChildNodes)
                {
                    Travel(n);

                }
            }

        }

TreeView TreeNode Page事件
[解决办法]
引用:
        protected void Page_Load(object sender, EventArgs e)
        {
                foreach (TreeNode node in menuleft.Nodes)
                {
                    Travel(node);
                }


        }


用得着每一个请求页面都创建一次TreeView吗?人家自己会恢复TreeView,然后你给作废了,人家的状态还怎么维持?

热点排行