感谢各位
让大家来讨论这个问题,有得到一些好的思路是最好的。
得到答案还是次要的,主要是动上脑筋,开宽些思路,就不错。
我基本上有个初步的思路,并且开发一专门的类库用来计算这种形式的统计。
用下载的Tree控件可能会很失望的,因为不是针对这种计算。我是用自己开发的树形结构的类库来实现这种功能。.NET很不错,用ASP虽然也可以实现类,但ASP的数组无法添加自己的类(有点失望,ASP没有实现树形结构)
树形结构以前我用专门的文章来说明,用二个类来组成:
TreeNode:节点
TreeList:树形列
TreeNode类:有ID,Name,ParentID,NamePath(名称路径),IDPath(ID路径),Content(扩展属性),ChildNodes(下属子节点),AllChildNods(所有子节点),ChildCount(下属子节点数),AllChildCount(所有子节点数)等属性;有AddNode,RemoveNode,GetAllChildsID(), GetAllChildsIDString()等方法;
TreeList类:有Nodes(所有节点队列),MaxTreeHeight,方法有AddNode,RemoveNode,ResetTreeList等公有方法
用该TreeList类可以实现树形结构,但还没有统计功能
因此另外开发统计树形类,从TreeNode及TreeList类继承
PayNode继承自TreeNode,增加三个属性Data1, Data2, Data3该类是针对这软件开发的
PayTreeList继承自TreeList,该类增加一方法AddData,即通过运算,形成一颗统计树。
类形成了,接下去就是把类与查询结合起来。比如我们查询一组统计数据(DataSet),该数据只有末梢节点的数字。然后把这些统计数据用遍历的方法赋值给PayNode的Data1, Data2, Data3,当然如果没有数据,先置为0(该运算可成为类的一种方法)。此时已经完成数据加入,但还没有统计数据。然后用PayTreeList的AddData()方法进行计算。
剩下的就是显示出来了,这些可以通过专门显示树形的类来显示。我这个TreeList类的Nodes属性其实是ArrayList,所以可以用数据表格来绑定的。
下图为用树形类的表单定制系统
图片如下: