FineUI 官方论坛

标题: 手风琴+树控件的问题 [打印本页]

作者: Spring    时间: 2012-4-25 20:46
标题: 手风琴+树控件的问题

上面菜单展开了,下面的没有下移,重了!
IE9 EXTASP.NET 3.1.3
前台代码:
<ext:Region ID="regionLeft" Split="true" Width="200px" Margins="0 0 0 0" ShowHeader="true"
                Title="导航菜单" Icon="Outline" EnableCollapse="true" Layout="Fit" Position="Left"
                runat="server">
                <Items>
                    <ext:Accordion ID="AccordionmMenu" runat="server" ShowBorder="false" ShowHeader="false"
                        ShowCollapseTool="true" />
                </Items>
            </ext:Region>
            
后台代码:
        string strMenuSql2 = @"select funcid,funcname,treeid,nvl(runwhat,'#') runwhat
                                from sys_function
                               where treeid='@treeid'
                                 and (instr('@ROLELIST','00',1)>0 or funcid in (select funcid from sys_rolefunc where instr('@ROLELIST',ROLEID,1)>0) )
                               order by itemsort ";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                InitMenu();
                btnUser.Text = UserAction.LoginName;
            }
        }
        
        private void InitMenu()
        {  
            DataTable dtMenu = DbHelperOra.Query(strMenuSql2.Replace("@treeid","1").Replace("@ROLELIST", UserAction.LoginRole)).Tables[0];
            int i = 0;
            foreach (DataRow dr in dtMenu.Rows)
            {  
                ExtAspNet.AccordionPane panel = new ExtAspNet.AccordionPane();
                 
                AccordionmMenu.Items.Add(panel);
                panel.Title = dr["funcname"].ToString();
                panel.ShowBorder = false;
                panel.IconUrl = "~/images/16/" + (i ++ ).ToString() + ".png";
                 
                ExtAspNet.Tree tree = new ExtAspNet.Tree();
                tree.ShowBorder = false;
                tree.ShowHeader = false;
                tree.AutoScroll = true;
                tree.EnableArrows = true;
                 
                tree.CssStyle = "font-family:仿宋体;font-size:18px; margin-top: 5px;";
                tree.CssClass = "mainmenu";
                tree.Height = new Unit(500);
                //tree.AnchorValue = "100%";
               
                MenuSubGet(tree.Nodes,dr);
                panel.Items.Add(tree);
            }
        }
        private void MenuSubGet(ExtAspNet.TreeNodeCollection TreeNodes, DataRow Menu)
        {
            string MenuSqlSub = strMenuSql2.Replace("@treeid", Menu["funcid"].ToString()).Replace("@ROLELIST", UserAction.LoginRole);//MenuSqlSub
            DataTable dtMenu = DbHelperOra.Query(MenuSqlSub).Tables[0];
            foreach (DataRow dr in dtMenu.Rows )
            {
                ExtAspNet.TreeNode node = new ExtAspNet.TreeNode();
                 
                node.Text   = dr["funcname"].ToString();
                node.NodeID = dr["funcid"].ToString();
                node.Target = "mainRegion";
               
                if (dr["runwhat"].ToString() == "#")
                {
                    MenuSubGet(node.Nodes,dr);
                }
                else
                {
                    node.Leaf = true;
                    node.NavigateUrl = dr["runwhat"].ToString();
                    node.IconUrl = "images/collapse-all.gif";
                }
                TreeNodes.Add(node);
            }
        }

作者: Landroid    时间: 2012-4-25 22:20
//tree.AnchorValue = "100%";
               
MenuSubGet(tree.Nodes,dr);
panel.Items.Add(tree);
/////////----------------------
AccordionmMenu.Items.Add(panel);
作者: 快乐的猪    时间: 2012-4-25 23:06
本帖最后由 快乐的猪 于 2012-4-25 23:07 编辑
Landroid 发表于 2012-4-25 22:20
//tree.AnchorValue = "100%";
               
MenuSubGet(tree.Nodes,dr);

我也遇到这个问题了,这个好像是个BUG吧,我按照你说的那个方法改了后还是重叠在一起了,我跟踪过生成的代码,json数据生成的都是一样的但是就是效果出问题了
作者: Landroid    时间: 2012-4-25 23:20
快乐的猪 发表于 2012-4-25 23:06
我也遇到这个问题了,这个好像是个BUG吧,我按照你说的那个方法改了后还是重叠在一起了,我跟踪过生成的代 ...

是add的顺序问题,
有人问过类似的问题
帖子1
http://bbs.extasp.net/forum.php? ... &page=1#pid1735
帖子2
http://bbs.extasp.net/forum.php? ... 7&page=1#pid937
作者: 快乐的猪    时间: 2012-4-26 10:11
Landroid 发表于 2012-4-25 23:20
是add的顺序问题,
有人问过类似的问题
帖子1

那个问题解决的是只有一层树节点的情况,对于这种有N级节点的问题还是没有帮助啊,我用递归方法生成树节点,手风琴的那些节点都能点开,唯独这个树节点出问题,而且不论我在哪个位置写Add,情况均是一样的,对于这种有N级节点的树是不是不能添加到手风琴里面呀
作者: Landroid    时间: 2012-4-26 11:46
快乐的猪 发表于 2012-4-26 10:11
那个问题解决的是只有一层树节点的情况,对于这种有N级节点的问题还是没有帮助啊,我用递归方法生成树节 ...

递归生成树添加到手风琴里肯定是可以的。
我实现过类似的,但是目前使用的电脑中没有代码可以给你参考,
你可以参考
http://extasp.net/#/tree/databind/tree_datatable.aspx
和之前的两个帖子,自己再试试
作者: Spring    时间: 2012-4-26 22:27
我顶,哪位搞过这种树,把代码贴一下。
作者: 快乐的猪    时间: 2012-4-27 10:24
本帖最后由 快乐的猪 于 2012-4-27 10:25 编辑
Landroid 发表于 2012-4-26 11:46
递归生成树添加到手风琴里肯定是可以的。
我实现过类似的,但是目前使用的电脑中没有代码可以给你参考,
...
确实是可以把树控件加入到手风琴里面,但是我是动态加载的,还是出现那个问题,这是我从例子里面拷贝出来的代码,在例子中是可以运行的
  1.             <ext:Region ID="regionLeft" Split="true" Width="200px" Margins="0 0 0 0" ShowHeader="true"
  2.                 EnableSplitTip="true" Title="导航菜单" Icon="Outline" EnableCollapse="true"
  3.                 Layout="Fit" Position="Left" runat="server">
  4.                 <Items>
  5.                     <ext:Accordion ID="AccordionmMenu" runat="server" ShowBorder="false" ShowHeader="false"
  6.                         ShowCollapseTool="true">
  7.                         <Panes>
  8.                             <ext:AccordionPane ID="AccordionPane1" runat="server" Title="面板一" IconUrl="~/images/16/1.png"
  9.                                 BodyPadding="2px 5px" Layout="Fit" ShowBorder="false">
  10.                                 <Items>
  11.                                     <ext:Tree runat="server" EnableArrows="true" ShowBorder="false" ShowHeader="false"
  12.                                         AutoScroll="true" SelectedNodeIDArray="hello" ID="treeMenu">
  13.                                         <Nodes>
  14.                                             <ext:TreeNode NodeID="hello" Text="树节点一" Target="main">
  15.                                                 <ext:TreeNode Text="测试节点11" Leaf="true" Target="main">
  16.                                                 </ext:TreeNode>
  17.                                                 <ext:TreeNode Text="测试节点12" Leaf="true" Target="main">
  18.                                                 </ext:TreeNode>
  19.                                                 <ext:TreeNode Text="测试节点13" Leaf="true" Target="main">
  20.                                                 </ext:TreeNode>
  21.                                             </ext:TreeNode>
  22.                                             <ext:TreeNode Text="树节点二" Target="main">
  23.                                                 <ext:TreeNode Text="测试节点21" Leaf="true" Target="main">
  24.                                                 </ext:TreeNode>
  25.                                                 <ext:TreeNode Text="测试节点22" Leaf="true" Target="main">
  26.                                                 </ext:TreeNode>
  27.                                                 <ext:TreeNode Text="测试节点23" Leaf="true" Target="main">
  28.                                                 </ext:TreeNode>
  29.                                             </ext:TreeNode>
  30.                                             <ext:TreeNode Text="树节点三" NavigateUrl="../basic/login.aspx" Leaf="true" Target="main">
  31.                                             </ext:TreeNode>
  32.                                         </Nodes>
  33.                                     </ext:Tree>
  34.                                 </Items>
  35.                             </ext:AccordionPane>
  36.                             <ext:AccordionPane ID="AccordionPane2" runat="server" Title="面板二" IconUrl="~/images/16/4.png"
  37.                                 BodyPadding="2px 5px" ShowBorder="false">
  38.                                 <Items>
  39.                                     <ext:Label ID="Label1" Text="面板二中的文本" runat="server">
  40.                                     </ext:Label>
  41.                                 </Items>
  42.                             </ext:AccordionPane>
  43.                         </Panes>
  44.                     </ext:Accordion>
  45.                 </Items>
  46.             </ext:Region>
复制代码
但是一放到我的那个页面里面就报错,真是邪了门了
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

无法使用前导 .. 在顶级目录上退出。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 无法使用前导 .. 在顶级目录上退出。

源错误:

执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  


作者: Spring    时间: 2012-4-28 21:53
我再顶!
作者: 快乐的猪    时间: 2012-5-3 22:45
这个问题难道没有人遇到过吗?在手风琴里面加载多级树控件这个功能我觉得应该会有遇到啊,怎么没有人解决嘞?
作者: sanshi    时间: 2012-5-5 18:12
-更新accordion/accordion_tree.aspx,演示如何通过后台改变每个树节点的Target属性。

[attach]389[/attach]

在IE9和Firefox下测试,没发现你说的问题。






欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4