C 生成無限級別選單

2021-05-22 02:30:03 字數 2228 閱讀 3663

最近開發的乙個專案中用到了無限級別選單,因此將此**貼出來,以供研究,開發環境為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...