• ComponentAtr Web.UI 2009.2教程——TreeView右键菜单


    实在找不到好的中文教程,我决定自己将平时工作中用的时候积累的经验,写下来,方便和我一样需要用到这个控件的朋友们学习,在这里抛砖引玉了。

    TreeView

    Node Context Menus( 带右键菜单的Tree)

    有两个重要点 一个是 右键目录栏   一个是TreeView

    右键目录栏:

    <ComponentArt:Menu id="rightMemu"

          Orientation="Vertical"

          DefaultGroupCssClass="MenuGroup"

          SiteMapXmlFile="rightMemuX.xml"

          DefaultItemLookID="DefaultItemLook3"

          DefaultGroupItemSpacing="1"

          ImagesBaseUrl="menu_images/"

          EnableViewState="false"

          ContextMenu="Custom"

          ShadowEnabled="true"

          runat="server">

        <ClientEvents>

          <ItemSelect EventHandler="Menu_onItemSelect" />

        </ClientEvents>

        <ItemLooks>

          <ComponentArt:ItemLook LookID="DefaultItemLook3" CssClass="MenuItem" HoverCssClass="MenuItemHover" ExpandedCssClass="MenuItemHover" LeftIconWidth="20" LeftIconHeight="18" LabelPaddingLeft="10" LabelPaddingRight="10" LabelPaddingTop="3" LabelPaddingBottom="4" />

          <ComponentArt:ItemLook LookID="BreakItem" CssClass="MenuBreak" />

        </ItemLooks>

        </ComponentArt:Menu>

     

    TreeView

        <ComponentArt:TreeView id="TreeView1" Height="260" Width="220"

            KeyboardEnabled="false"

            CssClass="TreeView"

            NodeCssClass="TreeNode"

            SelectedNodeCssClass="TreeNode"

            HoverNodeCssClass="HoverTreeNode"

            LineImageWidth="19"   <%-- 树虚线的宽度--%>

            LineImageHeight="20"  <%--树虚线的高度 --%>

            DefaultImageWidth="16"<%-- 树节点图片的宽度--%>

            DefaultImageHeight="16"<%-- 树节点图片的高度--%>

            NodeLabelPadding="3"<%--节点图片和 文字之间的间隔 --%>

            ImagesBaseUrl="treeview_images/"<%--节点和文字之间的图片路径 --%>

            ParentNodeImageUrl="folders.gif"

            LeafNodeImageUrl="folder.gif"

            ShowLines="true"<%-- 是否显示线--%>

            LineImagesFolderUrl="treeview_images/lines/"<%--节点之间线的图片路径 --%>

            EnableViewState="true"

            SiteMapXmlFile="newTreeData.xml"<%-- 树节点用XML存的话可以用这个属性--%>

            runat="server" >

          <ClientEvents>

            <ContextMenu EventHandler="TreeView1_onContextMenu" />

          </ClientEvents>

          </ComponentArt:TreeView>

    在这里我们的TreeView喝右键目录栏都是用XML做的数据源:右键菜单一般都是用XML做数据源,至于TreeView大家可以用数据库充当数据源,因为在实际开发中,右键的菜单数量往往是固定不多少数的。下面是我的两个XML数据源,供大家参考:

    rightMemuX.xml

    <items>

      <item Text="添加" Look-LeftIconUrl="icon_repeat.gif"  Value="Add"  Look-HoverLeftIconUrl="icon_repeat.gif"/>

      <item Text="修改" Look-LeftIconUrl="icon_repeat.gif"  Value="Update"  Look-HoverLeftIconUrl="icon_repeat.gif"/>

      <item Text="删除" Look-LeftIconUrl="icon_repeat.gif"  Value="delete"  Look-HoverLeftIconUrl="icon_repeat.gif"/>

      <item Text="刷新" Look-LeftIconUrl="icon_repeat.gif"  Value="Refence"  Look-HoverLeftIconUrl="icon_repeat.gif"/>

    </items>

    newTreeData.xml

    <Nodes>

      <TreeViewNode Text="桌子" Value="01">

        <TreeViewNode Text="桌子1" Value="0101" a="桌子" b="01" ImageUrl="calendar.gif" />

        <TreeViewNode Text="桌子2" Value="0102" />

        <TreeViewNode Text="桌子3" Value="0103" />

      </TreeViewNode>

      <TreeViewNode Text="椅子" Value="02">

        <TreeViewNode Text="椅子1" Value="0201" />

        <TreeViewNode Text="椅子2" Value="0202" />

        <TreeViewNode Text="椅子3" Value="0203" />

      </TreeViewNode>

      <TreeViewNode Text="床" Value="03">

        <TreeViewNode Text="床1" Value="0301" />

        <TreeViewNode Text="床2" Value="0302" />

        <TreeViewNode Text="床3" Value="0303" />

      </TreeViewNode>

    </Nodes>

    主要的核心JS方法:

    右键点击触发事件:TreeView1_onContextMenu

    另一个是点击目录栏单击触发事件:Menu_onItemSelect

        function Menu_onItemSelect(sender, eventArgs) {

              var menuItem = eventArgs.get_item();

              var contextDataNode = menuItem.get_parentMenu().get_contextData();

              alert(menuItem.get_text());

              alert(menuItem.get_value());

              alert(contextDataNode.get_text());

              alert(contextDataNode.get_value());

              alert(contextDataNode.Data[0][1]);

              alert(contextDataNode.Data[1][1]);

              alert(contextDataNode.Data[2][1]);

              alert(contextDataNode.Data[3][1]);

              alert(contextDataNode.Data[4][1]);

               return true;

                    }

         function TreeView1_onContextMenu(sender, eventArgs) {

              rightMemu.showContextMenuAtEvent(eventArgs.get_event(),eventArgs.get_node());

              alert("点右键触发事件:" + eventArgs.get_node().get_text());

              alert("点右键触发事件:" + eventArgs.get_node().Data[4][1]);

                    }

    在右键点击的时候我们最重要的是获得Tree单个节点的Value Text  等等一些自定义的属性的值,以方便我们可以根据每次传来的id来做出相关的操作

    var menuItem = eventArgs.get_item();

    可以获得目录菜单中XML的整个单一节点值,很多人习惯用

    menuItem.get_text()

    menuItem.get_value()

    来获得相应的value 和text,因为刚刚学习多于其中方法的不了解,我告诉大家在menuItem我们可以找到我们想要的属性和值

    var contextDataNode = menuItem.get_parentMenu().get_contextData();

    在这个方法里面我们可以获得相应节点的数值,和上面类似也是可以全部获得到

    你想要的属性和值在这里都能找到,接下来你是用JS调用一般处理程序,还是怎么样实现增删改查就很简单了。

    如果大家有好的中文教程谢谢与小编分享。

  • 相关阅读:
    html----有关图像
    前端开发初学者
    angular js 正序倒叙
    viewpager无线轮播获取网络图片
    angular js 球星
    angular js shopping
    angular js 公告墙
    Android 常用正则表达式
    Android 内存泄漏
    TCP/IP,必知必会的
  • 原文地址:https://www.cnblogs.com/VicHuang/p/2753360.html
Copyright © 2020-2023  润新知