最近開發的乙個專案中用到了無限級別選單,因此將此**貼出來,以供研究,開發環境為vs2008+sql 2000。
首先,建立資料庫表的**如下:
ifexists
(select
*from
dbo.sysobjects
where
id =
object_id(n'
[dbo].[work_sysmenu]')
andobjectproperty
(id, n
'isusertable')
=1)drop
table
[dbo].
[work_sysmenu]go
create
table
[dbo].
[work_sysmenu](
[flowid][
int]
identity(1
, 1) not
null,[
menu_title][
varchar](
100) collate chinese_prc_ci_as
null,[
menu_value][
varchar](
100) collate chinese_prc_ci_as
null,[
menu_url][
varchar](
500) collate chinese_prc_ci_as
null,[
menu_parent][
int]
null,[
menu_role][
varchar](
200) collate chinese_prc_ci_as
null,[
menu_meno][
text
]collate chinese_prc_ci_as
null,[
isvalid][
int]
null,[
menu_order][
int]
null
) on
[primary
]textimage_on
[primary]go
其中,menu_parent為選單的級別**,最頂級為0,其他級別**為上級選單的flowid。
asp.net中使用導航中的menu控制項作為選單。
首先需要將級別為0的頂級選單新增到menu中,**如下:
//////
根據使用者許可權獲取系統選單
///
private
void
getsysmenu()}
上面的**中的syssqlrunner.getdataset是我自用的乙個資料持久層框架內的方法,用來執行一段sql並返回dataset,這個可以根據自己的需要來使用不同的方法。另外有一條sql語句中包含乙個我自己寫的自定義函式dbo.getcharcount,作用是獲取乙個字串中,某個字元存在的個數。
create
function
getcharcount(
@target
varchar
(100
),@sear
varchar(1
))returns
intas
begin
declare
@charcount
intselect
@charcount=(
len(
@target)-
len(
replace
(@target
,@sear,''
)))return
@charcount
end
下面為生成下級無級樹的方法**:
//////
建立無級樹選單
///
///獲取選單的資料來源
///選單的父id
///建立選單的item
private
void
createmenu(datatable dt,
string
parentid,menuitem paritem)
}else}
好了,現在只需要在資料表中新增選單記錄,即可生成所需級別的選單。需要注意的是頂級選單的menu_parent值必須為0。當然也可以在此基礎上根據需要做修改。
js無限分級 樹 原生js生成無限級樹形選單
設計思路 要生成選單的源資料往往是乙個樹形資料結構 若不是也可以轉換成樹形結構 那我們一起寫部落格吧 因為源資料結構和目標選單結構都為樹形結構,所以其實我們要做的就是資料結構的轉譯,即將js樹形資料轉換為 ul,li 拼接成的樹形選單。在這裡我們通過樹的深度優先遍歷方式來完成這次轉義操作。結構 轉義...
無限級別分類
header content type text html charset utf8 address array array id 1 address 安徽 pid 0 array id 2 address 江蘇 pid 0 array id 3 address 合肥 pid 1 array id ...
DROPDOWNLIST無限樹形選單
public void getsubclass dataset ds,int level,string parentid,string sign else string ls if drr3 null drr3.length 0 else lslevel if lslevel 0 lp lp dr2...