zoukankan      html  css  js  c++  java
  • Ext.Net动态构建树TreePanel使用详解

    构建TeePanel有很多种方式,也是这几天研究的成果:

     1.通过TreeSote动态构建树。两种思想去创建,但有一种方式存在找不到treeSote。

     2.通过Node动态构建树。

    第一种:构建静态树:

     这是可行的一种方式:

     1.先在页面上构建TreeStore,用OnReadData事件来加载

    <ext:TreeStore ID="TreeStore1" runat="server" OnReadData="GetExamplesNodes" >
            <Proxy>
             <ext:PageProxy>
              <RequestConfig Method="GET" Type="Load" />
             </ext:PageProxy>
            </Proxy>
            <Root>
             <ext:Node NodeID="Root" Expanded="true" />
            </Root>
           </ext:TreeStore>

    2.在页面上创建TreePanel用来显示TreeStore。

     <ext:TreePanel
                            runat="server"
                            Title="TreePanel"
                            Width="300"
                            Height="200"
                            Margin="10"
                            RootVisible="false"
                            Lines="false"
                            UseArrows="true"
                            StoreID="TreeStore1" />

    另一种,创建思想是页面的我就什么TreePanel与TreeStore都不要了,直接都从代码创建,如下:

    1.代码创建TreeStore对象。

    TreeStore treeStore = new TreeStore()
                        {
                            ID = "treeStore" + entity.Id.ToString()
                            ,
                            Proxy = {
                                    new PageProxy(){
                                        RequestConfig = {
                                            Method = HttpMethod.GET,
                                            Type = DirectEventType.Load
                                        }
                                    }
                                }
                             ,
                            Root = {
                                    new Node(){
                                        NodeID = "Root",
                                        Expanded = true
                                    }
                                }

                        };

                        //this.ResourceManager1.AllUpdatePanels.Add(treeStore);

                        //treeStore.ReadData += new TreeStoreBase.ReadDataEventHandler(GetExamplesNodes);

     2.创建TreePanel

                        TreePanel treePanel = new TreePanel()
                        {
                            ID = "treePanel" + entity.Id.ToString(),
                            Header = false,
                            AutoScroll = true,
                            Lines = false,
                            UseArrows = true,
                            CollapseFirst = false,
                            RootVisible = false,
                            Animate = false,
                            Border = false

                            //Store = {
                                //    treeStore
                                //},
                            ,
                            Listeners =
                                {
                                    ItemClick = { Handler = "onTreeItemClick(record, e);" },
                                    AfterRender = { Handler = "onTreeAfterRender" }
                                }
                        };

                        treePanel.Store.Add(treeStore);
            3.创建一个Panel来显示。            

           Panel p = new Panel()
                        {
                            ID = "p" + entity.Id.ToString(),
                            Title = entity.FullName + "-功能菜单树",
                            Border = false,
                            BodyStyle = "padding:6px;",
                            Icon = Icon.User,
                            //Items = {


                            //}
                        };
                        p.Items.Add(treePanel);

                        WestPanel.Items.Add(p);//增加到页面显示

    思路没有错吧,可写了这么多代码居然报错,说什么treeStroe...找不到。not found

    这可把我气坏了,想了一晚上也没想出来结果,后来转变了一个思路,又查API。

    可能TreeStroe必须得在页面创建,不允许动态创建,这是我查找的结果如果有人能创建希望留言留下您宝贵的实现方式。

     到最后终于找到了另一种实现方法如下:

    第二种:通过Node动态构建树方法实现,从我个从角度推荐此方法:

    1.创建根目录

    Node root = new Node() { NodeID = entity.Id.ToString() };
                        LoadModules(root);

                        root.AllowDrag = false;
                        root.Expanded = true;
                        //treePanel.Root.Add(root);

    2.直接把创建的TreePanel加入到页面控件显示。
                        WestPanel.Items.Add(new Panel()
                        {
                            ID = "pNavigation" + entity.Id.ToString(),
                            Title = entity.FullName + "功能菜单树",
                            Border = false,
                            BodyStyle = "padding:6px;",
                            Icon = Icon.User,
                            AutoScroll = true,
                            Items = {
                                new TreePanel() {//属性配置
                                   ID="treePanel"+ entity.Id.ToString(),
                                   Header = false,
                                   AutoScroll = true,
                                   Border = false,
                                   Lines = false,
                                   UseArrows = true,
                                   CollapseFirst = false,
                                   RootVisible = false,Animate = false,
                                   Root = {
                                        root
                                   }
                                   ,
                                   //Store = {
                                   //    treeStore
                                   //},
                                   Listeners={//注册事件
                                        ItemClick={ Handler="onTreeItemClick(record, e);" },
                                        AfterRender={ Handler="onTreeAfterRender"}
                                   }                     
                                }
                           
                            }
                        });

    上面的各种方法我可是花费了我的时间、精力实验出来决定好用的方式了,在这里记录一下,以后如果哪里忘了过来瞧瞧。

    如果早能找到上面代码,我就不用花这么长时间研究了,TreePanel网上的资料不多也不太全。

    下面是我用于做记录的代码:就是上面动态生成的代码结构:

     //<ext:Panel ID="Navigation" runat="server" Title="功能菜单树" Border="false" BodyStyle="padding:6px;" Icon="User">
            //                 <Items>
            //                  <ext:TreePanel
            //                    ID="exampleTree2"
            //                    runat="server"
            //                    Header="false"
            //                    AutoScroll="true"
            //                    Lines="false"
            //                    UseArrows="true"
            //                    CollapseFirst="false"
            //                    RootVisible="false"
            //                    Animate="false">
            //                                <Store>
                           
            //                        <ext:TreeStore ID="TreeStore2" runat="server" OnReadData="GetExamplesNodes" >
            //                            <Proxy>
            //                                <ext:PageProxy>
            //                                    <RequestConfig Method="GET" Type="Load" />
            //                                </ext:PageProxy>
            //                            </Proxy>
            //                            <Root>
            //                                <ext:Node NodeID="Root" Expanded="true" />
            //                            </Root>
            //                        </ext:TreeStore>
            //                    </Store>

            //                    <Listeners>
            //                        <ItemClick Handler="onTreeItemClick(record, e);" />
            //                        <AfterRender Fn="onTreeAfterRender" />
            //                    </Listeners>                                                          
            //                  </ext:TreePanel>
            //                 </Items>
            //               </ext:Panel>
            //               <ext:Panel ID="Settings" runat="server" Title="自定义功能" Frame="false" Border="false"
            //                            BodyStyle="padding:16px;" Icon="Wand" Html="<b>您可在此添加自定义功能,或直接删除</b>" />


     

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 快速幂
    Java实现 蓝桥杯VIP 算法提高 最长字符序列
    Java实现 蓝桥杯VIP 算法提高 最长字符序列
    Java实现 蓝桥杯VIP 算法提高 最长字符序列
    Java实现 蓝桥杯VIP 算法提高 最长字符序列
    Java实现 蓝桥杯VIP 算法提高 最长字符序列
    linux下配置QT(很全的步骤,从下载开始,配置QMAKESPEC)
    QT 读取文件夹下所有文件(超级简单的方法,不需要QDirIterator)
    Windows平台下的图形化的Ping工具
    Qt中的键盘事件,以及焦点的设置(比较详细)
  • 原文地址:https://www.cnblogs.com/spring_wang/p/3081141.html
Copyright © 2011-2022 走看看