技海无涯-罗宾

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
我们在使用Treeview控件实现文章编辑的分类选择的时候, 点击分类整个页面会PostBack,当然采用AJAX可以实现局部刷新。但是无论怎样,页面的执行效率会降低。所以本代码的目标是将Treeview输出为分级缩进的DropDownlist。

其思路是:生成分类的代及代序列,以代形成缩进并以代序列排序。
以下是返回以代序列排序的分类列表。以代形成缩进略。


 1 
 2 -- =============================================
 3 -- Author:        <Author,,Name>
 4 -- Create date: <Create Date,,>
 5 -- Description:    <Description,,>
 6 -- =============================================
 7 ALTER PROCEDURE [dbo].[CategoryTreeGeneration]
 8     -- Add the parameters for the stored procedure here
 9 AS
10 BEGIN
11     -- SET NOCOUNT ON added to prevent extra result sets from
12     -- interfering with SELECT statements.
13     Set NOCOUNT ON
14 
15     Create Table #CategoryTree(
16     CategoryID Nvarchar(10),
17     Generation int,
18     GenerationLine Varchar(25Default ''
19     )   
        //构建临时表,存储每一分类的ID,代,代序列
20
21     Declare
22     @Generation int,
23     @Root Nvarchar(10)
24 
25     set @Generation = 1
26     set @Root = '0'
27     //根的分类ID

28     insert #CategoryTree (CategoryID, Generation,GenerationLine)
29         select @Root,@Generation,@Root
       //填充根分类

30     WHile @@RowCount >0
31     Begin
32         set @Generation = @Generation+1
33             insert #CategoryTree(CategoryID,Generation,GenerationLine)
34                 SELECT ArticleCategory.CategoryID,@Generation,#CategoryTree.GenerationLine
35                 +' '+ substring(ArticleCategory.CategoryID,len(ArticleCategory.CategoryID)-1,2)
       //分类ID以两位分级,所以取ID后两位作为代序列取值
36                 from ArticleCategory
37                     join #CategoryTree
38                     on #CategoryTree.Generation = @Generation-1
39                         And
40                         ArticleCategory.ParentID = #CategoryTree.CategoryID
41     end
42     
43     select ID,#CategoryTree.CategoryID as CategoryID,Generation, CategoryName from #CategoryTree join ArticleCategory 
44         on #CategoryTree.CategoryID = ArticleCategory.CategoryID
45         order by GenerationLine
       //以代序列排序输出
46 
47     Set NOCOUNT Off
48
49     
50 
51 END


52 
53 
54 
55 
56 
57 

posted on 2007-09-21 10:15  罗宾  阅读(724)  评论(0编辑  收藏  举报