1. 程式人生 > >不用第歸演算法快速顯示樹,對於Oracle資料庫(1)

不用第歸演算法快速顯示樹,對於Oracle資料庫(1)

在顯示不確定樹節點多少時,我們絕大多數使用第歸演算法,要多次和資料庫進行連線操作取資料,下面我講的演算法,僅僅只和資料操作一次,然後用動態陣列在樹型控制元件中顯示,快速方便。我以例項給大家演示,熟悉製造行業的朋友一般都知道BOM(產品結構)Oracle給大家提供一個非常方便的功能,一次可以把整個產品的結構全部取出來,比如:

select level ID, 父物料編碼,子物料編碼 from TB_產品結構表 connect by prior 子物料編碼 = 父物料編碼 start with 父物料編碼=’10C000000’

(圖一)

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

(圖一)為取出的結構的部分,ID是相對於根節點的層次,我根據取出來的紀錄的規律性,但是他不包含子物料編碼為根節點的資訊,所有在構造樹控制元件時要注意添入根節點的資訊,作了一個特定的樹控制元件,只要把取出來的紀錄付給樹控制元件的DataSource,就能方便的顯示樹,再次重用時,特別方便,只要在介面中加入控制元件,然後給紀錄集就可以了。

定義節點的資訊,可以便於你在節點填充更多從資料庫取出來的資訊。

using System;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

using

System.Collections;

using System.ComponentModel;

using System.Drawing;

using System.Data;

using System.Windows.Forms;

namespace BQ_TreeView

{

///<summary>

/// /過載樹節點的類,這個可以擴充套件,便於填充更多的資訊

///</summary>

public class BQ_TreeNode:TreeNode

{

private string m_MatID;

public BQ_TreeNode(){}

///<summary>

///建構函式

///</summary>

///<param name="strText">節點要顯示的文字</param>

public BQ_TreeNode(string strText)

{

base.Text=strText;

}

public string MatID

{

get

{

return m_MatID;

}

set

{

m_MatID=value;

}

}

}

 }