- 爱易网页
-
ASP.NET教程
- 依据条件动态从数据库取数据生成treeveiw
日期:2014-05-18 浏览次数:20425 次
根据条件动态从数据库取数据生成treeveiw?
张三(销售主管)
--李四(销售主任)
--小李(组员)
--小李(组员)
--小王(销售主任)
数据结构是这样的:
表Sales(销售人员表)
SaleID SaleName ParentID
1 张三 0
2 李四 1
3 小李 2
4 小李 2
5 小王 1
我的问题是,如当 "李四 "登录,只能看他本人和他所有子节数据.请问该怎么实现
------解决方案--------------------
加个字段,如path
SaleID SaleName ParentID ,Path
1 张三 0 1,
2 李四 1 1,2,
3 小李 2 1,2,3,
4 小李 2 1,2,4,
5 小王 1 1,5,
查询的时候如果查李四,那就
path like '%,2,% '
------解决方案--------------------
我的问题是,如当 "李四 "登录,只能看他本人和他所有子节数据.请问该怎么实现
========
基于你目前的表结构,可以这样 ->
1。 SQL Server 中递归获取子代节点记录
-- http://community.csdn.net/Expert/TopicView3.asp?id=5603719
-- 测试数据
CREATE TABLE Catalog(
[ID] int primary key,
TypeName varchar(100),
SupTypeID int
)
INSERT INTO Catalog
SELECT 1, 'Agriculture ', 0
UNION
SELECT 2, 'Apparel & Fashion ', 0
UNION
SELECT 3, 'Automobile ', 0
UNION
SELECT 4, 'Business Services ', 0
UNION
SELECT 5, 'Agriculture & By-product Agents ', 1
UNION
SELECT 6, 'Agriculture Product Stocks ', 1
UNION
SELECT 7, 'Agriculture Products Processing ', 1
UNION
SELECT 8, 'Other ', 6
UNION
SELECT 9, 'Animal Extract ', 6
UNION
SELECT 10, 'Animal Fodders ', 7
GO
CREATE TABLE Product(
PID int primary key,
ProductName varchar(100),
TypeID int,
State int
)
INSERT INTO Product
SELECT 1, 'dfdsf ', 8, 1
UNION
SELECT 2, 'dfdsfdsf ', 9, 0
UNION
SELECT 3, 'dfdfd32 ', 10, 1
UNION
SELECT 4, 'dsfdsf ', 8, 1
UNION
SELECT 5, 'dfdsfds ', 6, 2
GO
-- 存储过程, 临时表版本
CREATE PROCEDURE dbo.usp_SearchProductByAncestorCatalog(
@AncestorCatalogId int
)
AS
SET NOCOUNT ON
-- 目录树临时表
CREATE TABLE #CatalogTree(
CatalogId int,
Generation int)
DECLARE
@Generation int
SET @Generation = 1
INSERT INTO #CatalogTree
SELECT @AncestorCatalogId, @Generation
WHILE @@RowCount > 0
BEGIN
SET @Generation = @Generation + 1
INSERT #CatalogTree
SELECT c.[ID], @Generation
FROM Catalog c
JOIN #CatalogTree t
ON t.Generation = @Generation - 1 AND t.CatalogId = c.SupTypeId
END
--SELECT * FROM #CatalogTree
SELECT * FROM Product WHERE TypeId IN(SELECT CatalogId FROM #CatalogTree)
SET NOCOUNT OFF
RETURN
GO