1. 控件功能 结合列表控件及树控件的优点,在列表控件中实现类型树的多层级操作
  2. 官方说明 http://documentation.devexpress.com/#AspNet/clsDevExpressWebASPxTreeListASPxTreeListtopic
  3. 使用说明
    1. 绑定的数据源需具备当前节点编号、父级节点编号等字段
    2. 通过设置属性下列属性控件自动实现层级关系,初始化只显示第一层,可通过+/-图标展开/收缩层级关系
      KeyFieldName="Id" ParentFieldName="ParentId"
  4. 代码示例
    1. aspx界面设置

      <dx:ASPxTreeList ID="treeList" runat="server" AutoGenerateColumns="False" KeyFieldName="CategoryId"
              Width="100%" ParentFieldName="ParentId" ClientInstanceName="treeList" OnNodeDeleting="TreeList_NodeDeleting"
              OnNodeInserting="TreeList_NodeInserting" OnNodeUpdating="TreeList_NodeUpdating"
              OnCellEditorInitialize="TreeList_CellEditorInitialize" OnNodeValidating="TreeList_NodeValidating"
              OnHtmlDataCellPrepared="treeList_HtmlDataCellPrepared"  OnCommandColumnButtonInitialize="treeList_CommandColumnButtonInitialize"
              >
              <Columns>
                  <dx:TreeListDataColumn FieldName="Name" Caption="名称">
                  </dx:TreeListDataColumn>
                  <dx:TreeListComboBoxColumn FieldName="Status" Caption="类型">
                  </dx:TreeListComboBoxColumn>
                  <dx:TreeListCommandColumn Caption="编辑功能">
                      <EditButton Visible="true" Text="编辑">
                      </EditButton>
                  </dx:TreeListCommandColumn>
                  <dx:TreeListCommandColumn Caption="新建功能">
                      <NewButton Visible="true" Text="新建">
                      </NewButton>
                  </dx:TreeListCommandColumn>
                  <dx:TreeListCommandColumn Caption="删除功能">
                      <DeleteButton Visible="true" Text="删除">
                      </DeleteButton>
                  </dx:TreeListCommandColumn>
              </Columns>
              <SettingsEditing Mode="PopupEditForm" />
              <SettingsPopupEditForm Caption="编辑" Width="500" Modal="true" HorizontalAlign="Center"
                  VerticalAlign="WindowCenter" />
              <SettingsBehavior AllowFocusedNode="True" AllowDragDrop="false" ProcessSelectionChangedOnServer="false" />
              <Settings ShowTreeLines="true" GridLines="Horizontal" />
              <SettingsText CommandEdit="编辑" RecursiveDeleteError="该节点有子节点,不能删除" CommandNew="新建资源"
                  ConfirmDelete="确定要删除吗?" CommandUpdate="更新" CommandDelete="删除" CommandCancel="取消" />
          </dx:ASPxTreeList> RecursiveDeleteError属性:当点击删除链接时,控件会自动判断是否有子节点,如有则给与提示并不触发删除事件
    2. aspx.cs后台代码设置
      1. 绑定数据

        this.treeList.DataSource =数据源
         this.treeList.DataBind()
      2. HtmlDataCellPrepared事件(对每个单元格进行处理,通常用于根据类型编号显示文字描述)

         protected void treeList_HtmlDataCellPrepared(object sender, TreeListHtmlDataCellEventArgs e)
            {
                if (e.Column.FieldName == "Status")
                {
                    switch (e.CellValue.ToInt())
                    {
                        case 1:
                            e.Cell.Text = "正常";
                            break;
                        case 0:
                            e.Cell.Text = "禁用";
                            break;
                        default:
                            e.Cell.Text = "未知";
                            break;
                    }
                }
            }
      3. CommandColumnButtonInitialize事件(用于根据条件对命令按钮进行处理,如隐藏/显示新增、编辑、删除链接等)
         protected void treeList_CommandColumnButtonInitialize(object sender, TreeListCommandColumnButtonEventArgs e)
            {
                if (e.NodeKey != null)
                {
                    //Level不等于1的数据行,隐藏新增按钮
                    TreeListNode node = this.treeList.FindNodeByKeyValue(e.NodeKey.ToString());  //e.NodeKey 主键值
                    if (node.GetValue("Level").ToInt() != 1 && e.ButtonType == TreeListCommandColumnButtonType.New)
                    {
                        e.Visible = DefaultBoolean.False;
                    }
                }
            }
      4. CellEditorInitialize事件(新增/编辑窗体初始化,代码为初始化Status列的值)
            protected void TreeList_CellEditorInitialize(object sender, DevExpress.Web.ASPxTreeList.TreeListColumnEditorEventArgs e)
            {
                if (e.Column.FieldName == "Status")
                {
                    var combo = e.Editor as ASPxComboBox;
                    combo.Items.Add("1", 1);
                    combo.Items.Add("0", 0);
                    combo.SelectedIndex = 0;
         
                    if (this.treeList.IsEditing)
                    {
                        combo.SetComboboxChecked(e.Value.ToInt());
                    }
                }
            }
      5. NodeInserting事件 (新增事件)

          protected void TreeList_NodeInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
            {
            }
        6、NodeUpdating事件(修改事件)

            protected void TreeList_NodeUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
            {     }
        7、NodeDeleting事件(删除事件)

        protected void TreeList_NodeDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
            {}

        8、NodeValidating事件(验证事件,新增或修改前触发此事件进行验证,验证通过再触发 新增、修改事件)

         protected void TreeList_NodeValidating(object sender, DevExpress.Web.ASPxTreeList.TreeListNodeValidationEventArgs e)
            {

         if (b.Value || b == null)
                    {
                        AddError(e.Errors, "Name", "名称已存在,请勿重复添加.");
                    }

          if (string.IsNullOrEmpty(e.NodeError) && e.Errors.Count > 0)
                {
                    e.NodeError = "请改正错误。";
                } }

DevExpress控件使用系列--ASPxTreeList的更多相关文章

  1. DevExpress控件使用系列--ASPxGridView+Popup+Tab

      1.控件功能     列表控件展示数据.弹框控件执行编辑操作.Tab控件实现多标签编辑操官方说明 2.官方示例       2.1 ASPxGridView                http ...

  2. DevExpress控件使用系列--ASPxUploadControl(图片上传及预览)

        1.控件功能     列表控件展示数据.弹框控件执行编辑操作.Tab控件实现多标签编辑操官方说明 2.官方示例       2.1 ASPxImage                http: ...

  3. DevExpress控件的GridControl控件小结

    DevExpress控件的GridControl控件小结 (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条 ...

  4. DevExpress控件库 开发使用经验总结3 制作项目安装包

    2015-01-27 使用DevExpress控件包开发C/S项目完成后,部署前需要制作本地安装包.本文还是使用“SetupFactory”安装工厂来制作安装包.在以前的系列文章中详细介绍过该工具的使 ...

  5. DevExpress控件库 开发使用经验总结1 DevExpress简介、安装、使用

    2015-01-24 最近公司开发的WinForm客户端图书行业ERP管理系统,界面端采用了DevExpress控件库.界面效果非常绚丽,类似于Office2007.2010的界面风格. 其中的控件功 ...

  6. DevExpress控件与VS和.NET各个版本的支持情况

    如下图所示,绿色Yes代表支持,红色No代表不支持.对于有些人觉得装了dev后,vs工具箱没有,一般都是以下两大问题: 1.要么你的Dev的版本不支持你当前的VS版本,没有很正常. 2.要么你的项目的 ...

  7. DevExpress控件安装、汉化使用教程

    前言 DevExpress是一个庞大的控件库,也很是好用(没用过,听说),但是要收费. 网上关于DevExpress的教程满天飞,我找了一下午也没找到正确的安装.简单实用教程,还是自己摸索吧. 自己动 ...

  8. 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择

    在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...

  9. DevExpress控件使用经验总结- GridView列表行号显示操作

    DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一 ...

随机推荐

  1. 友盟分享--集成QQ和微信

    随着社交工具的应用范围越来越广,分享一些内容的功能也开始要求实现了. 用得比较多的第三方,比如说友盟,比如说Share等等... 前几天刚用友盟写了集成QQ和微信客户端的功能,觉得有必要分享一下. 在 ...

  2. 点击文字label同时选中checkbox radio

    在做网页的时候一般会有一个需求:点击一段文字信息的同时选中某个checkbox 旧处理方式是在这段文字上加上点击事件触发checkbox的选中事件 //jq中://选中 $("#ID&quo ...

  3. 7款震撼人心的HTML5CSS3文字特效

    1.HTML5像素文字爆炸重组动画特效 今天我们要分享一款基于HTML5技术的文字像素爆炸重组动画特效,我们可以在输入框中指定任意文字,点击确定按钮后,就会将原先的文字爆炸散去,新的文字以像素点的形式 ...

  4. zz linux 下查看局域网内所有存活主机和MAC进址

    用namp对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip-mac的对应了namp比较强大也可以直接扫描mac地址和端口 进行ping扫描,打印出对扫描做出响应的主机: nmap -sP 1 ...

  5. Difference between ref and out parameters

    Original link: http://www.dotnet-tricks.com/Tutorial/csharp/K0Hb060414-Difference-between-ref-and-ou ...

  6. UIKit,Core Data , Core Graphics, Core Animation,和OpenGLES框架

    iOS的主要框架介绍   框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件.一个共享库定义的方法或函数可以被应用程序调用. IOS提供了很多你可以在应用程序 ...

  7. 【Sharing】开发与研发

    [声明]此文为转载,只为收藏. 按:这几天我一直在写这篇东西,本来是胸有成竹,没想到后来越写越发现自己在这个题目下有太多话想说,而以我现在的能力又不能很好地概括总结,以至于越写越长,文章结构也变得混乱 ...

  8. HTML5-draggable(拖放)

                                                   <!DOCTYPE html> <html class="no-js" ...

  9. JQuery插件开发 - 模板

    (function($) { $.fn.PluginName = function(options) { // 创建一个默认设置对象 var defaults = { key : "Defa ...

  10. js设计模式(5)---外观模式

    0.前言 早上好,今天天气不错,估计有35度吧,坐在空调室里相当惬意,那么酒足饭饱之后就应该干些正事了. 1. 为什么使用外观模式 外观模式提供了一个高层接口,封装一些复杂操作或繁琐行为,方便调用.门 ...