Delphi中根據分類資料生成樹形結構的最優方法 (轉)
很多都有類似於如下的表結構(table1):
ID Name ParentID
---------------------------------------------------------
001 電子類 0
002 金屬類 0
003 電容電子 001
004 電阻電子 001
005 有色金屬 002
而且大家都習慣於用樹(TreeView)來顯示,這樣就可以很好的顯示整個表的分類情況。但如果資料量多時會造成樹的生成比較慢,特別是用遞迴來實現時要訪問的次數很多(根據層數),用在三層中效果更加顯。在此提供一個好的方法來生成樹形結構。
這個演算法只訪問一次資料庫,具體的實現如下:
1、一次性從資料庫中取出所有的資料,並按照ParentID欄位進行排序,這樣就保證每一條資料的父節點都在它的前面。
2、取出第一條資料畫到樹中,在新增到樹中時先找到這條資料的父節點,如果沒有 則將此記錄直接作為樹的第一級節點
3、如果還有資料,則取出來第2步,直到沒有資料為止。
實現:
本程式將用一個stlID的TStringList變數來存放對應樹中每一個節點的ID值,用FindParent來父節點。
function FindParent(ID:String):TTreeNode;
var
i:Integer;
begin
result:=nil;
for i:=TreeView1.Items.Count-1 downto 0 do
if stlID.Strings[i]=ID then
begin
result:=TreeView1.Items[i];
break;
end;
end;
//生成樹
procedure CreateTree;
var
tmpNode:TTreeNode;
begin
Query1.close;
Query1..Text:=' * from table1 order by ParentID';
Query1.Open;
Query1.First;
while not Query1.Eof do
begin
tmpNode:=TreeView1.Items.AddChild(FindParent(Query1.FielyName('ParentID').AsString),Query1.FieldByName('Name').AsString);
stlID.Add(Query1.FieldByName('ID').AsString);//記錄ID
Query1.Next;
end;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958564/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 根據資料庫中取記錄自定義一棵樹結構 (轉)資料庫
- EF:根據實體類生成表結構SQLSQL
- 資料結構中樹形結構簡介資料結構
- [資料結構] 根據前中後序遍歷中的兩種構造二叉樹資料結構二叉樹
- 根據一個輸入資料構造二叉樹和連結串列資料結構的方法(c++)二叉樹資料結構C++
- 樹形資料構造的方法
- Delphi 根據資料庫表生成Record型別,並封裝CRUD資料庫型別封裝
- VS中根據實體生成資料庫資料庫
- markdown樹形結構生成工具
- 七、基本資料結構(樹形結構)資料結構
- MyBatis 根據資料表反向生成 java 實體類等MyBatisJava
- php tree類的使用(樹形結構)PHP
- [js] 根據元素ID遍歷樹形結構,查詢到所有父元素IDJS
- (樹)根據中序後序構建二叉樹二叉樹
- [資料結構] 劃分樹資料結構
- 一個根據資料庫自動生成model類的擴充套件資料庫套件
- js將有父子關係的資料轉換成樹形結構資料JS
- 再談網站自動生成系統中的樹形結構網站
- 根據表結構,自動生成匯入指令碼指令碼
- EasyTree 一個生成樹型資料結構最簡單的方式資料結構
- 樹形結構
- (樹)根據排序陣列或者排序連結串列重新構建BST樹排序陣列
- JavaScript中的樹型資料結構JavaScript資料結構
- 史上最強的資料分頁方法 (轉)
- PHP根據資料表自動生成CURD操作PHP
- EF3.1 根據資料庫生成程式碼資料庫
- 值得了解的九種樹形資料結構 - Franco資料結構
- 字串陣列轉為樹形結構字串陣列
- 關於樹的資料結構(二分搜尋樹,堆和優先佇列)資料結構佇列
- layui樹形結構UI
- java樹形結構Java
- JS 將有父子關係的陣列轉換成樹形結構資料JS陣列
- 資料結構-二分搜尋樹資料結構
- [資料結構] 樹、二叉樹、森林的轉換資料結構二叉樹
- 一本正經的聊資料結構(6):最優二叉樹 —— 哈夫曼樹資料結構二叉樹
- 【資料結構】建立二叉樹的方法資料結構二叉樹
- 八大資料結構分類大資料資料結構
- Delphi中的類和物件 (轉)物件