建立编号 名称 两个字段
编号字段两位为一级
譬如 00 rootnode1
0000 node1
000000 subnode1
000001 subnode2
0001 node2
000100 subnode3
000101 subnode4
01 rootnode2 " select * from table where 编号 like '00'",这样的查询语句可以建立rootnode1级别下
所有的子节点
编号字段两位为一级
譬如 00 rootnode1
0000 node1
000000 subnode1
000001 subnode2
0001 node2
000100 subnode3
000101 subnode4
01 rootnode2 " select * from table where 编号 like '00'",这样的查询语句可以建立rootnode1级别下
所有的子节点
不过在我的实现过程中,要求的是,顺序一定的添加:这是为已有节点动态添加子节点的例子: classno=((MYNodeData)(trnode->Data))->ClassNo;
tmpqry->SQL->Add("select * from "+FLinkTable_Class->TableName+" where "+ classNo_fd+" like '"+classno+"%'");
tmpqry->Open();
if(tmpqry->RecordCount>=2)
{
tmpqry->First();
tmpqry->Next();
}
else
{
tmpqry->Close();
delete tmpqry;
return(true);
}
}
//******读取分类表数据,构建分类树***********
//******逐条读取分类表的数据,定位树节点,进行新节点的添加*******
while (!tmpqry->Eof)
{
StructData=new TMYNode;
StructData->ClassNo=tmpqry->FieldByName(classNo_fd)->AsString;
StructData->LibraryIndex=dbindex;
StructData->NameField=namefield; AnsiString classno=tmpqry->FieldByName(classNo_fd)->AsString;
AnsiString classname=tmpqry->FieldByName(className_fd)->AsString;
if (classno.Length()>(((MYNodeData)(trnode->Data))->ClassNo).Length())
trnode=FtrView->Items->AddChildObject(trnode,classname,StructData);
else
{
while (classno.Length()<=(((MYNodeData)(trnode->Data))->ClassNo).Length())
trnode=trnode->Parent;
trnode=FtrView->Items->AddChildObject(trnode,classname,StructData);
}
trnode->ImageIndex=5;
trnode->SelectedIndex=6;
tmpqry->Next();
} tmpqry->Close();
\ - RIGHT2 - SUBR2
ROOT1 - RIGHT3 - SUBR3
/ - RIGHT4 - SUBR4
left2 \ RIGHT5 - SUBR5left3 / RIGHT1 - SUBR6
\ - RIGHT3 - SUBR7
ROOT2 - RIGHT5 - SUBR8
left4 / \ RIGHT6 - SUBR9注意: RIGHT列在不同的ROOT下可能相同如:RIGHT1同时在ROOT1,ROOT2
root SUBROOT
1 0
1 1
2 2
3 3
3 4
2 结构
ROOT1
SUBROOT1
SUBROOT2
ROOT2
如何转换?
update treetable set parentid=(select root from treetable t where t.subroot=treetable.root)
keyfield,
displayfield,
listfield,
panrentfield,
datafield
等的含义吗?