一个Menu 菜单表,里面设计MenuID(pk) Name Parentid URL
一个UserInfo用户表 设计UserID(pk) UserName Password
一个Nexus关系表 设计UserID(FK) MenuID(Fk)
菜单表和用户表都是一个关系表的外键,也就是某个用户有某些单菜的关联就有进入该菜单的权限(不知道这样说能听懂吗)
我用树读取所有菜单的Name 但是我想取得用户ID后判断关系表中是否有关联,有就读出来,没有就不显示。这个怎么判断?
第二,我判断出来后如何绑定URL 也就是跳转的地址?
我从前做的时候没有做权限也就是所有的的都是用一个模版写死了的, URL地址也是用<a href="url地址">这样固定了,不知道我上面这样的设计是否可以实现,又是如何实现?
帮帮忙!
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
......留个脚印~~明天再看~~
------解决方案--------------------------------------------------------
o
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
明白了,還是可以在訪問數據庫的時候先處理好。
參考下面這個存儲過程,你給一個用戶ID,就會查詢出所有應該顯示的菜單
- SQL code
CREATE PROCEDURE GetMenusByUserID@UserID INT --用戶IDASDECLARE @tmp TABLE (mid INT PRIMARY KEY NOT NULL,pid INT)INSERT INTO @tmp SELECT MenuID,Parentid FROM Nexus WHERE UserID=@UserIDDECLARE @OldRecordCnt INTDECLARE @CurRecordCnt INTSELECT @OldRecordCnt=COUNT(*) FROM @tmpWHILE @OldRecordCnt<>0BEGIN INSERT INTO @tmp SELECT MenuID,Parentid FROM Menu a INNER JOIN @tmp b ON a.MenuID=b.pid WHERE a.MenuID NOT IN(SELECT mid FROM @tmp) SELECT @CurRecordCnt=COUNT(*) FROM @tmp IF @CurRecordCnt=@OldRecordCnt BREAK ELSE SET @OldRecordCnt=@CurRecordCntENDSELECT m.MenuID,m.Name,m.ParentId,m.URL FROM Menu m WHERE m.MenuID IN (SELECT mid FROM @tmp)GO
------解决方案--------------------------------------------------------
你用的是什么控件?可以使用數據綁定啊。
------解决方案--------------------------------------------------------
參考下面這個簡單的示例,我用DataList控件來顯示鏈接,每條記錄使用一個HyperLink,其中NavigateUrl與數據庫中的Link字段(即你說的URL)綁定,而Text(即鏈接的文本)與數據庫中的Name字段綁定。
- HTML code
<asp:DataList ID="DataList2" runat="server" DataKeyField="ID" DataSourceID="SqlDataSource2"> <ItemTemplate> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Link") %>' Text='<%# Eval("Name") %>'></asp:HyperLink><br /> </ItemTemplate> </asp:DataList><asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:onlineConnectionString3 %>" SelectCommand="SELECT [ID], [Link], [Name] FROM [MenuClass]"></asp:SqlDataSource>