• TreeList控件使用1


    01.public partial class TLExample : DevExpress.XtraEditors.XtraForm  
    02.{
    03. DataTable dt = new DataTable();
    04. public TLExample()
    05. {
    06. InitializeComponent();
    07. dt.Columns.Add("ID",System.Type.GetType("System.String"));
    08. dt.Columns.Add("ParentID", System.Type.GetType("System.String"));
    09. dt.Columns.Add("TreeNode", System.Type.GetType("System.String"));
    10. }
    11.
    12. private void TLExample_Load(object sender, EventArgs e)
    13. {
    14. dt.Rows.Add("1", "0", "根节点");
    15. dt.Rows.Add("2", "1", "子节点1");
    16. dt.Rows.Add("3", "1", "子节点2");
    17. dt.Rows.Add("4", "1", "子节点3");
    18. dt.Rows.Add("5", "1", "子节点4");
    19. treeList1.DataSource = dt;
    20. }
    21.
    22.}
    
    

    1、添加基础表数据

    2、基础表中含有ID,ParentID两个字段用来组织树的父子结构。

    3、在Run Designer上设置显示列!

    3、将符合规则的数据表直接绑定到TreeList控件上!

    结果如图!

    可是在实际的数据库中往往不会存在上面那种很标准的(含有ID,ParentID的数据)。所以我们不能直接将数据绑定到控件上就必须对控件进行处理。

    解决方法:

    方法一:

    将数据库中的数据根据实际规则处理成含有ID跟ParentID的表,然后进行绑定。

    方法二:

    根据实际规则,逐层加载每个节点!

    下面对方法二用一个实例讲解!

    在电脑中,文件夹是一层层加载下去的就如同一个树,怎么样将系统中的链接加载到TreeList上以树的形式显示出来呢?

    怎么样把这树显示在TreeList中?

    系统中可以得知的数据:根节点\节点1   根节点\节点2  根节点\节点3

    解决步骤:

    1、加载第一级节点

    2、判断是否含有子节点,若含有则继续加载

    代码:

    1、加载第一级节点

    DataTable dt = new DataTable();

    TreeListNode tln;

    dt.Columns.Add("ID", System.Type.GetType("System.String"));

    dt.Columns.Add("TreeNode", System.Type.GetType("System.String"));

    DataRow drView = dt.NewRow();

    drView.BeginEdit();

    drView["ID"] = Guid.NewGuid();

    drView["TreeNode"] = "根节点";

    drView.EndEdit();

    tln = treeList1.AppendNode(drView.ItemArray,null);

    2、判断是否含有子节点

          private bool IsHasChild(string name)        {            string midpt = "";            name为当前路径            与系统路径比较            若相等则含有子节点 返回TRUE            若不等则不含有子节点 返回FALSE        }

    3、当含有子节点,则找到子节点并与第一步相同的操作将子节点加载到TreeList上!

    其中包含的一些详细的方法在下一节中给出!!!

  • 相关阅读:
    Hystrix高可用系统容错框架,资源隔离,熔断,限流
    Leecode no.25 K 个一组翻转链表
    no.1 Web浏览器
    源码解析-JavaNIO之Buffer,Channel
    Leecode no.24 两两交换链表中的节点
    Kafka RocketMQ 是推还是拉?
    Leecode no.23 合并K个升序链表
    图解计算机底层IO过程及JavaNIO
    Leecode no.21 合并两个有序链表
    AcWing每日一题--摘花生
  • 原文地址:https://www.cnblogs.com/cwgyn/p/2382680.html
Copyright © 2020-2023  润新知