TreeView for Asp.NET MVC and Core

发布时间:2017/08/31 00:08 发布者:jeffryli

返回博客中心

概述

使用TreeView显示文档中的标题,索引中的条目,磁盘上的文件和目录,或最佳显示为层次结构的任何其他类型的信息。

TreeView

我们将为此博客的大部分使用以下模型类,因为它返回具有分层数据的数组:

   1:  public class Property
   2:      {
   3:          public string Header { get; set; }
   4:          public string Image { get; set; }
   5:          public bool NewItem { get; set; }
   6:          public Property[] Items { get; set; }
   7:          
   8:  public static  Property[] GetData(string val)
   9:    {
  10:              return new Property[]
  11:              {
  12:                  new Property
  13:                  {
  14:                      Header = "Electronics",
  15:                      Image = "/Content/images/electronics.png",
  16:                      Items = new Property[]
  17:                      {
  18:                          new Property { Header="Trimmers/Shavers" },
  19:                          new Property { Header="Tablets" },
  20:                          new Property { Header="Phones",
  21:                              Image ="/Content/images/phones.png",
  22:                              Items = new Property[] {
  23:                                  new Property { Header="Apple" },
  24:                                  new Property { Header="Motorola", NewItem=true },
  25:                                  new Property { Header="Nokia" },
  26:                                  new Property { Header="Samsung" }}
  27:                          },
  28:                          new Property { Header="Speakers", NewItem=true },
  29:                          new Property { Header="Monitors" }
  30:                      }
  31:                  },
  32:                  new Property{
  33:                      Header = "Toys",
  34:                      Image = "/Content/images/toys.png",
  35:                      Items = new Property[]{
  36:                          new Property{ Header = "Shopkins" },
  37:                          new Property{ Header = "Train Sets" },
  38:                          new Property{ Header = "Science Kit", NewItem = true },
  39:                          new Property{ Header = "Play-Doh" },
  40:                          new Property{ Header = "Crayola" }
  41:                      }
  42:                  },
  43:                  new Property{
  44:                      Header = "Home",
  45:                      Image = "/Content/images/home.png",
  46:                      Items = new Property[] {
  47:                          new Property{ Header = "Coffeee Maker" },
  48:                          new Property{ Header = "Breadmaker", NewItem = true },
  49:                          new Property{ Header = "Solar Panel", NewItem = true },
  50:                          new Property{ Header = "Work Table" },
  51:                          new Property{ Header = "Propane Grill" }
  52:                      }
  53:                  }
  54:              };
  55:          }
  56:      }
Data Binding

因为Bind属性使用了一个IEnumerable源,你可以通过数据绑定TreeView来创建树。 源集合中的每个项目都有关于节点和子节点集合的信息。 DisplayMemberPath属性设置为要显示在树节点中的文本。使用以下代码将ChildItemsPath属性设置为子节点集合:

   1:  @model IEnumerable<TreeViewDemo.Models.Property>
   2:   
   3:  @(Html.C1().TreeView().Id("tv").Bind(Model)
   4:          .DisplayMemberPath("Header")
   5:          .ChildItemsPath("Items"))
显示 Check Boxes

对每个节点显示复选框与设置属性一样简单。 将ShowCheckBoxes属性设置为true以显示复选框

TreeView CheckBoxes

   1:  @(Html.C1().TreeView().Id("tv").Bind(Model)
   2:          .ShowCheckboxes(true)
   3:          .DisplayMemberPath("Name")
   4:        .ChildItemsPath("SubExployees"))
显示图片

您可以通过将ImageMemberPath属性设置为图像路径来自定义每个节点以显示图像和文本

TreeView Images

编辑

允许用户通过将IsReadOnly属性设置为false来编辑节点。 对节点内容进行的编辑将自动传播到与DisplayMemberPath相关联的字段的源集合。 要进一步控制编辑,请使用客户端方法OnClientNodeEditStarting,OnClientNodeEditStarted,OnClientNodeEditEnding和OnClientNodeEditEnded

   1:  @(Html.C1().TreeView().Id("tv").Bind(Model)
   2:          .IsReadOnly(false)
   3:          .DisplayMemberPath("Header")
   4:          .ImageMemberPath("Image")
   5:          .ShowCheckboxes(true)
   6:          .AllowDragging(true)
   7:      .ChildItemsPath("Items"))
拖拽

通过将AllowDragging属性设置为true,允许用户将节点拖到树视图中的新位置。 允许拖动时,用户可以将任何节点拖到树中的任何位置。 您可以通过处理TreeView拖放事件来自定义此行为。

   1:  @(Html.C1().TreeView().Id("tv").Bind(Model)
   2:          .DisplayMemberPath("Header")
   3:          .AllowDragging(true)
   4:      .ChildItemsPath("Items"))
按需加载

当您处理大型分层数据源时,延迟加载很有用,并希望避免一次性加载整个数据集所涉及的延迟。 TreeView控件使得延迟加载变得非常简单。 在绑定属性中,将第二个参数设置为lazyLoadActionUrl,并提供一个URL,以便根据需要获取节点的数据。 如果子节点具有子节点,则可以为该字段设置一个空数组,并将该字段的名称用于ChildItemsPath属性。 否则,可以让该字段为空。

如果你有疑问,可以到GCDN获得技术支持:

http://gcdn.grapecity.com.cn/showforum-68.html

GCDNhttp://gcdn.grapecity.com.cn/

官方网站/developer

 


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网