对于无限级分类的话,我们首先要考虑的是数据库表要怎么设计,表设计的好对以后的程序实现时很重要的.我的表结构如下:
typeid ,自然为类别id,这是一个自增的字段; pid:存放的是父节点的typeid ; childrenid:存放的是其所有子节点的typeid,中间用','隔开(没有子节点默认为空); spath: 路径.存放规则是父节点的spath+'自己的typeid',中间用','隔开。
最后两个字段很重要,有了他们写某些操作时,你会感到很方便,不如需要删除操作何针对某一个类的查找。为了程序算法的方便我设置了一个所谓的根节点(或者叫根类),在程序中它是不可删除的,它的pid设为NULL(这点很重要,下文将说明原因)。
下面我们将以实现功能为例讲解:
1)读取操作,由于。net自带有TREEVIEW控件,能很方便的表现出多级分类的形式所以我选择了它。共有三个方法。