TreeView控件与数据窗结合控件原理

原创 2001年04月27日 00:05:00
在某系统的实现中,遇到了物料清单的编辑及显示问题,要求能够按照树形结构显示某产品的详细构成情况。例如,产品分为几个大总成,各总成下有若干装置、部件,各部件下可能有小总成、部件、零件等等,这样就可能形成一棵很复杂的树结构。
  而且要求能够进行复杂的查找,过滤等操作,因此与数据窗的查找(find)及过滤(filter)、排序(sort)等结合起来是非常理想的控件构建方式。在PB中,通过树与数据窗一起运行,是可以满足这样要求的。甚至可以做成通用的控件用来满足所有的树结构类型的数据的编辑。

  以下讲述主要实现原理:

  1、数据窗中,包含用来处理成树节点treeviewItem的各个列,如 代码、名称、父代码、层次、排序、其他等等;
  2、创建数据窗时,在SQL语法中建立一个计算列(伪列):Item_Handle,用来存放该行数据对应的树句柄;
  3、从标准TreeView继承,建立UserObject,取名:PFC_Treeview,对该控件建立如下函数:
    ·uf_init_tree(as_data_store,as_id_col,as_name_col,as_parent_col,as_level_col,as_sort_string)  // datastore同步 
    ·uf_init_Tree(as_data_window,as_id_col,as_name_col,as_parent_col,as_level_col,as_sort_string) // 数据窗同步
    ·uf_find_id(string as_id_value) return long //按照ID进行查找(实际上在数据窗中查找并返回Item_Handle值);
    ·uf_find_name(string as_name_value) return long //按照 name_column 来查找;
    ·uf_get_all_handle(ref al_handles[]) return long//返回所有的句柄;
    ·uf_get_current_handle() return long //返回当前句柄;
    ·uf_get_current_item() return TreeViewItem //返回当前节点;
    ·uf_get_current_id() // 返回当前 节点的ID值
    ·uf_get_current_name() // 返回当前节点的 label 值
    ·uf_get_current_data() // 返回当前节点的 data 值,any类型,可以扩充为 structure以存放其它数据
    ·uf_get_child_handle(ref al_child_handle[]) //返回当前节点的所有子节点句柄
    ·uf_get_parent_handle(ref al_parent_handle[]) //返回当前节点的父节点句柄,一直到最顶层;
    ·……
    ·uf_update_item(al_handle) //更新节点;
    ·uf_insert_item(al_parent_handle,atvi_item) //增加节点

  4、在应用中,将这个控件直接放入窗口中,然后调用 uf_init_tree()函数来初始化;
  5、如果是常用的树,则将初始化函数在 PFC_Treeview的construct事件中写入,这样就可以直接用了。
  6、对数据窗的的修改,需要更新树的变化
  7、在树的 EndLabelEdit事件中,更新数窗信息;
  8、如果支持拖放,则dragdrop,dragenter,dragwithing,dragleave等事件都需要处理;
  9、……

  关于这个控件,可以写的函数非常多,甚至可以完成数据窗的所有功能,这样,对于经常使用TreeView的应用而言,就可以极大地简化代码复杂性,界面一致,高效。

TreeView控件与数据窗结合控件原理

在某系统的实现中,遇到了物料清单的编辑及显示问题,要求能够按照树形结构显示某产品的详细构成情况。例如,产品分为几个大总成,各总成下有若干装置、部件,各部件下可能有小总成、部件、零件等等,这样就可能形成...
  • liulee
  • liulee
  • 2001年04月27日 00:05
  • 1087

【C#】利用C#窗体与SQL Server的连接、Treeview制作SQL Server数据库查看器

实质上,本文的中心还是在讨论C#对SQL Server的增删改查,只是这次创新一点,配合Treeview制作SQL Server数据库查看器。 具体如下图: 根据SQL Server,Test数据...
  • yongh701
  • yongh701
  • 2015年12月31日 12:28
  • 2707

winform如何实现将数据库数据加载到树上

一、简介对于winform中如何加载xml生成目录树,在前边一篇文章“c#如何实现从xml中加载树目录,并且显示完整的Text”中我已经写了详细的过程。但是有些时候我们不可能将大量的数据存储到xml中...
  • ztzi321
  • ztzi321
  • 2015年05月07日 16:38
  • 2466

C# TreeView控件 展示数据的两种方式

本文档所用表结构  ItemId,ItemName,ParentId,Level, 1、普通数据绑定。将所有数据读取到临时表,再通过对表数据的筛选进而为树控件添加数据。 //初始化树 ...
  • xueqh
  • xueqh
  • 2018年01月11日 17:01
  • 6

TreeVIew控件绑定数据

TreeVIew控件可以实现在后台管理界面,实现多级菜单的样式。数据可以自己手动添加,也可以从数据库中绑定,方法如下: 数据库中的表T_Category表的样式: HTML代码: htt...
  • u011955860
  • u011955860
  • 2013年11月26日 16:59
  • 705

treeview控件(动态数据绑定+整行选择)(WPF)(一)

在使用treeview控件时,数据大多都是从数据库中读取后动态绑定的,而且为了美观,在选择项的时候多会高亮显示整行...
  • pyx61198
  • pyx61198
  • 2015年05月14日 17:06
  • 2495

C# .NET treeView(树形控件)绑定数据的通用方法 (精)

DataTable dtCangKu = new DataTable(); //定义一张新表 BLL基础数据.frm_CangKuZiLiao.frm_CangKuZiLiaoClient myfr...
  • u010297416
  • u010297416
  • 2013年10月28日 15:46
  • 2848

treeview控件(动态数据绑定+整行选择)(WPF)(二)

上一篇中介绍了动态绑定数据库的方法,本篇中将会介绍整行选择的方法                                             ...
  • pyx61198
  • pyx61198
  • 2015年05月19日 11:46
  • 1145

SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题

SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题 1、实现效果如下: 点击各个节点进入相应的链接 2、测试列...
  • miragesky2049
  • miragesky2049
  • 2012年01月16日 14:24
  • 2692

完善treeview控件的数据绑定功能

数据库表设计  id  int                          pid int  null                          name nvarchar n...
  • WindFlowInTheSky
  • WindFlowInTheSky
  • 2013年05月15日 17:10
  • 861
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TreeView控件与数据窗结合控件原理
举报原因:
原因补充:

(最多只允许输入30个字)