C#TreeList构建

博客介绍了TreeList和DataTable的构造方法。TreeList构造需多添加ID和PID列,构建时要定义列名称、编码、ID和PARENTID。还需写加载TreeList和构建DataTable的方法,定义列和行后填充表,最后将DataTable赋给TreeList,并关联节点与ID、PID列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

treelist的构造和datatable的构造方法一样,就是需要多添加ID和PID两个列并赋值

首先定义需要列名称、编码等
构建TreeList还必须定义ID和PARENTID(这是为了确定树的分层结构)

    private const string NAME_COLUMN = "NAME";
    private const string CODE_COLUMN = "CODE";
    private const string ID_COLUMN = "ID";
    private const string PARENT_COLUMN = "PARENT";

写一个加载TreeList的方法

public void LoadTreeList()
    {
        //构建datatable
        DataTable pDataTable = CreateDataTableStruct();
        FillDataTableData(pDataTable);
        
          //构建treelist结构
        CreateTreeListStruct();
        
         //将dataTable设置为treelist的datasource
        this.treeList1.ParentFieldName = PARENT_COLUMN;//定义tree的父节点列
        this.treeList1.KeyFieldName = ID_COLUMN;//定义子节点列
        this.treeList1.DataSource = pDataTable;
    }

写构建datatable的方法(定义了四个列)

     private DataTable CreateDataTableStruct()
    {
        DataTable pDataTable = new DataTable();
    
         //名称列
        DataColumn pNameColumn = new DataColumn();
        pNameColumn.ColumnName = NAME_COLUMN;
        pNameColumn.DataType = typeof(string);
        pNameColumn.Caption = "名称";
        pDataTable.Columns.Add(pNameColumn);
        
        //编码列
        DataColumn pCodeColumn = new DataColumn();
        pCodeColumn.ColumnName = CODE_COLUMN;
        pCodeColumn.DataType = typeof(string);
        pCodeColumn.Caption = "编码";
        pDataTable.Columns.Add(pCodeColumn);
        
        //ID列
        DataColumn pIdColumn = new DataColumn();
        pIdColumn.ColumnName = ID_COLUMN;
        pIdColumn.DataType = typeof(int);
        pIdColumn.Caption = "ID";
        pDataTable.Columns.Add(pIdColumn);
        
        //PID列
        DataColumn pParentIdColumn = new DataColumn();
        pParentIdColumn.ColumnName = PARENT_COLUMN;
        pParentIdColumn.DataType = typeof(int);
        pParentIdColumn.Caption = "PID";
        pDataTable.Columns.Add(pParentIdColumn);
        
        }

列定义好后,需要定义行来填充行

         private void FillNewRow(DataTable pDataSource, int id,int pid,string name, string  code)
    {
        DataRow pNewDataRow = pDataSource.NewRow();
        pNewDataRow[ID_COLUMN] = id;
        pNewDataRow[PARENT_COLUMN] = pid;
        pNewDataRow[NAME_COLUMN] = name;
        pNewDataRow[CODE_COLUMN] = code;
        
         pDataSource.Rows.Add(pNewDataRow);
    }
    
      private void FillNewRoadRow(DataTable pDataSource, int id, int pid, string name)
    {
        FillNewRow(pDataSource, id, pid, name, "");
    }

列和行都定义好后开始填充表

   private void FillDataTableData(DataTable dataSource)
    {
        FillNewRow(dataSource,0,-1, "图书馆");
        FillNewRow(dataSource,1,0, "山东科技大学图书馆");
        FillNewRow(dataSource,2,0, "江苏海洋大学图书馆");
        FillNewRow(dataSource, 3,1,"数值分析", "001");
        FillNewRow(dataSource, 4,1,"现代测量数据处理", "002");
        FillNewRow(dataSource, 5,1,"跨文化交际", "003");
        FillNewRow(dataSource, 6,2,"组合导航", "004");
        FillNewRow(dataSource, 7,2,"微波遥感", "005");
        FillNewRow(dataSource, 8,2,"海洋测量技术", "006");
    }

至此,一个datatable已经建好了,如下图样式在这里插入图片描述
接下来将datatable数据表赋给treelist,首先先构造出树的列,最后再把行的值传进去

  private void CreateTreeListStruct()
    {
        //清空列
        treeList1.Columns.Clear();
        
        //名称列
        TreeListColumn pNameColumn = this.treeList1.Columns.Add();//添加新列
        pNameColumn.FieldName = NAME_COLUMN;
        pNameColumn.Visible = true;//定义显不显示,如果不写就是默认不显示
        pNameColumn.Caption = "名称";
        
        //编码列
        TreeListColumn pCodeColumn = this.treeList1.Columns.Add();
        pCodeColumn.FieldName = CODE_COLUMN;
        pCodeColumn.Visible = true; // 显示
        pCodeColumn.Caption = "编码";
        
        //ID列
        TreeListColumn pIdColumn = this.treeList1.Columns.Add();
        pIdColumn.FieldName = ID_COLUMN;
        pIdColumn.Visible = false;//不显示
        pIdColumn.Caption = "ID";
        
         //PID列
         TreeListColumn pParentIdColumn = this.treeList1.Columns.Add();
        pParentIdColumn.FieldName = PARENT_COLUMN;
        pParentIdColumn.Visible = false;//不显示
        pParentIdColumn.Caption = "PID";
        
        }

在加载方法里已经将treelist的节点与ID列PID列关联
效果图如下
在这里插入图片描述
//获取鼠标点击的行的信息

        TreeListNode treeListNode = treeList1.FocusedNode;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值