不用第歸演算法快速顯示樹,對於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
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;
}
}
}
}