DevExpress控件使用系列--ASPxTreeList

  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 = "请改正错误。";
        } }

转载于:https://www.cnblogs.com/ydfq-home/p/5017445.html

DevExpress控件使用系列--ASPxTreeList相关推荐

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

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

  2. 【原创】DevExpress控件GridControl中的布局详解

    在进行DevExpress控件GridControl的使用时,因控件的灵活性,所以用户会经常进行拖动控件的列,以达到自己满意的样式, 但下次再打开时系统就会重新还原到原有的布局风格,为了能够保持用户之 ...

  3. 线程访问 DevExpress控件异常时 解决方法

    线程访问 DevExpress控件异常时 解决方法 Control.CheckForIllegalCrossThreadCalls = false; DevExpress.Data.CurrencyD ...

  4. ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)

    目录: ListView控件学习系列1-了解ListView控件 ListView控件学习系列2-编辑ListView ListView控件学习系列3-ListView选择,排序,分页 ListVie ...

  5. DevExpress控件GridControl中的布局详解 【转】

    DevExpress控件GridControl中的布局详解 [转] 2012-10-24 13:27:28|  分类: devexpress |  标签:devexpress  |举报|字号 订阅 h ...

  6. DevExpress控件之GridControl控件

    DevExpress控件之GridControl控件 http://blog.sina.com.cn/s/blog_6769068d0100iucx.html 1.  设置数据源: string sq ...

  7. DevExpress控件使用经验总结

    DevExpress控件使用经验总结 DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发 ...

  8. Silverlight控件应用系列索引

    Silverlight 控件应用系列 最后更新日期:2009-10-18 1.控制器类[Controls] 展开 闭合 日历组件(Calendar) 子窗体组件(ChildWindow) 非模式窗体组 ...

  9. 今天你写控件了吗?----ASP.net控件开发系列之(一)开篇

    今天你写控件了吗?----ASP.net控件开发系列之开篇 早段时间,同事之间很流行打CS,所以那段时间的问候变成了"今天你杀XX了吗?" 控件开发也许是程序员最能发掘自己创造力的 ...

最新文章

  1. vb打开服务器excel文件路径,咨询下VB如何打开EXCEL文件并将内容显示在listbox中
  2. Android开发中的控件--ProgressBar和ListView
  3. 将excel用VBA生成指定格式的TXT文件
  4. Hades:移动端静态分析框架
  5. 五位专家跟你讲讲为啥Python更适合做AI/机器学习
  6. 推荐我们在B站的生信程序基础课
  7. php - 获取数组头尾元素
  8. 进阶06 List集合
  9. 中职学校计算机教学中,中职学校计算机教学方式
  10. 更改计算机时间出现没有权限,win7系统修改时间时显示没有权限的解决方法
  11. Web导出Excel总结
  12. 浪潮服务器维修报价,浪潮服务器报价网
  13. 凹凸技术揭秘·羚珑智能设计平台·逐梦设计数智化
  14. 如何利用python计算即期利率_PYTHON计算任务收益率
  15. ESRGAN - Enhanced Super-Resolution Generative Adversarial Networks论文翻译——中英文对照
  16. (FortiGate)飞塔防火墙配置AD***
  17. cf1064E. Dwarves, Hats and Extrasensory Abilities(二分 交互)
  18. 深度学习论文笔记(增量学习)——CVPR2020:Mnemonics Training: Multi-Class Incremental Learning without Forgetting
  19. PTA 公路村村通(Prim思想)
  20. P6-570更换rootvg镜像故障硬盘之我和小伙伴都惊呆了

热门文章

  1. 科创板:中国科技产业新引擎
  2. Yann LeCun专访:我不觉得自己有天分,但是我一直往聪明人堆里钻
  3. MIT新开发的 AI 模型有望改进恶性脑瘤治疗
  4. 2017-2018中国物联网产业全景图谱报告——物联网对产业深度变革已开启
  5. 在这场人工智能“战争”中,这些国家都在做些什么?
  6. 富士康遭黑客巨额勒索 企业如何应对数据安全风险?
  7. 腾讯云智能制造首次披露三大战略布局,发布“511”生态伙伴计划
  8. 写给大忙人看的死锁详解
  9. JAVA中循环删除list中元素的方法总结
  10. react16 渲染流程