• DevExpress控件使用系列--ASPxTreeList


    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 = "请改正错误。";
                  } }
     
     
  • 相关阅读:
    dapper 批量删除、新增、修改说明
    android 加载assets目录下的静态html文件案例
    webstorm中使用git提交代码时出现unversioned files错误
    windows server 2008 R2 x64 部署.net core 3.1项目
    asp.net core 项目添加nlog日志(loggerFactor.AddNLog 过时处理(.net core 3.1))
    机器学习笔记之一步步教你轻松学主成分分析PCA降维算法
    机器学习笔记之类别特征处理
    机器学习笔记之range, numpy.arange 和 numpy.linspace的区别
    机器学习笔记之Numpy的random函数
    机器学习笔记之矩阵分解 SVD奇异值分解
  • 原文地址:https://www.cnblogs.com/ydfq-home/p/5017445.html
Copyright © 2020-2023  润新知