樹型部件分層載入資料實現思路,提高速度,提高效率
阿新 • • 發佈:2019-02-01
我們知道,樹型部件中可以以樹型展示資料出來。例如我們把組織機構展示出來,可以寫業務表:
select dept_id,dept_name,upper_id from sa_dept_dict
然後再設定樹型關鍵列未 dept_id,上級列未upper_id。這樣就出來了一個樹型的資料。
這樣在一般業務中是沒有問題的,如果我們設想一下sa_dept_dict表中有成千上萬條資料,這樣直接一下全部讀出來形成一棵樹,效率可能就很慢。那如何來解決較好呢。
我們知道因為樹型是可以一個一個節點展開的,那就可以先預設載入第一級的資料出來,然後點選第一級的某一個值,再把該值的第二級加載出來,這樣點某一個就只加載某一個的直接下級,資料量一下就少很多了,效率提高就非常明顯。
例如:開始開啟樹型的時候,只查詢第一層的資料出來。
select dept_id,dept_name,upper_id from sa_dept_dict where upper_id =0
然後,在樹型部件的“資料行雙擊事件”中,再寫以下程式碼。
dim dt=樹型部件1.DataTable
if 樹型部件1.TreeList.FocusedNode.Nodes.Count=0 then
'載入選擇節點的子資料。並填寫到樹型部件中,實現分層載入資料。
dim dt1=executeSelect("select dept_id,dept_name,upper_id from sa_dept_dict where upper_id="&樹型部件1.GetFocusedNodeValue("DEPT_ID"))
for each dr in dt1.Rows
dt.Rows.Add(dr.ItemArray)
next
end if
select dept_id,dept_name,upper_id from sa_dept_dict
然後再設定樹型關鍵列未 dept_id,上級列未upper_id。這樣就出來了一個樹型的資料。
這樣在一般業務中是沒有問題的,如果我們設想一下sa_dept_dict表中有成千上萬條資料,這樣直接一下全部讀出來形成一棵樹,效率可能就很慢。那如何來解決較好呢。
我們知道因為樹型是可以一個一個節點展開的,那就可以先預設載入第一級的資料出來,然後點選第一級的某一個值,再把該值的第二級加載出來,這樣點某一個就只加載某一個的直接下級,資料量一下就少很多了,效率提高就非常明顯。
例如:開始開啟樹型的時候,只查詢第一層的資料出來。
select dept_id,dept_name,upper_id from sa_dept_dict where upper_id =0
然後,在樹型部件的“資料行雙擊事件”中,再寫以下程式碼。
dim dt=樹型部件1.DataTable
if 樹型部件1.TreeList.FocusedNode.Nodes.Count=0 then
'載入選擇節點的子資料。並填寫到樹型部件中,實現分層載入資料。
dim dt1=executeSelect("select dept_id,dept_name,upper_id from sa_dept_dict where upper_id="&樹型部件1.GetFocusedNodeValue("DEPT_ID"))
for each dr in dt1.Rows
dt.Rows.Add(dr.ItemArray)
next
end if
這樣就實現了分層載入資料,大家可以試試,資料量越大,效果越明顯。比如總共上萬條資料後,分層載入資料就非常有必要。
轉載請註明出處: