Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 根据每个层次结构下的值按字母顺序排序_Asp.net_Sql_Sql Server_Sql Server 2008_Treeview - Fatal编程技术网

Asp.net 根据每个层次结构下的值按字母顺序排序

Asp.net 根据每个层次结构下的值按字母顺序排序,asp.net,sql,sql-server,sql-server-2008,treeview,Asp.net,Sql,Sql Server,Sql Server 2008,Treeview,我有一个SQL表,其结构和值如下 AccountID | Company | ValuePath | ParentID -------------------------------------------------- 1 ZA 0/1 0 2 SS 1/2 1 3 BB 1/3 1

我有一个SQL表,其结构和值如下

AccountID   | Company  |  ValuePath  | ParentID
--------------------------------------------------
    1          ZA           0/1           0
    2          SS           1/2           1
    3          BB           1/3           1
    4          JJ           1/3/4         3
    5          AB           1/3/5         3
    6          ST           1/3/6         3
    7          KK           1/7           1
    8          ZZ           1/3/4/8       4
    9          AA           1/3/4/9       4
    10         CC           1/3/4/10      4
    11         AA           0/1           0
------------------------------------------------------
我在asp.net的树视图中使用的valuepath。正如您所看到的,在同一个表中存在父子关系。但我面临的问题是每个树视图节点下的排序。当我绑定此文件时,树视图上显然没有排序。但在装订之前,我需要把这张桌子按字母顺序排好

所以最终的平板电脑应该是这样的

AccountID   | Company  |  ValuePath  | ParentID
--------------------------------------------------
    11         AA           0/1           0
    1          ZA           0/1           0
    3          BB           1/3           1
    5          AB           1/3/5         3
    4          JJ           1/3/4         3
    9          AA           1/3/4/9       4
    10         CC           1/3/4/10      4
    8          ZZ           1/3/4/8       4
    6          ST           1/3/6         3
    7          KK           1/7           1
    2          SS           1/2           1

------------------------------------------------------
希望结果表是清楚的。这意味着从父节点到子节点的每个节点都将按字母顺序排序。此外,如果每个节点下有任何子节点,则会在列出该节点的同级节点之前列出该节点。子节点也将按字母顺序排序。 更新
例如,AccountID 8和10以及9也位于parentAccount 4下。因此,当取account 4下的这三个,并根据companyname的字母顺序对它们进行排序时,顺序将与结果表中的顺序相同,即AA、CC、ZZ,希望您得到它。

这里有一个CTE,它在假设有一个种子节点的情况下工作。 它应该适用于两个种子节点,其中一个没有任何子节点

WITH CTEEX(Company, Accountid, ValuePath  ,parentid, Sort)
AS (SELECT Company,Accountid,ValuePath  , parentid,Company as Sort FROM Table_1 
    WHERE parentId =0
    UNION ALL
    SELECT  a.Company,a.Accountid,a.ValuePath  ,a.parentid,CONVERT (nvarchar(2000), RTRIM(Sort ) + '|    '+ a.Company)
    FROM Table_1 a JOIN CTEEX b on a.parentId=b.Accountid
 )
SELECT Accountid,Company,  ValuePath  ,parentid
FROM CTEEX 
ORDER BY Sort

帐户ID 8和10以及9也在父帐户4下。因此,当考虑账户4下的这三个项目,并根据公司名称的字母顺序对其进行排序时,顺序将与结果表中的AA、CC、ZZ相同,希望您能理解。可能更适合将您的评论添加到问题中,这会触发一个错误“列中的锚定和递归部分之间的类型不匹配”排序“的递归查询”CTEEX“。对不起,我不是SQL专家。因此,请求您的supportSET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE[dbo]。[TABLE_1]([Valuepath][nchar](10)NULL,[Accountid][int]IDENTITY(1,1)NOT NULL,[Company][nvarchar](2000)NULL,[parentId][int NULL,约束[PK TABLE___1]主键群集([Accountid]ASC)(PAD_INDEX=OFF,STATISTICS_norecocomputer=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]ON]上的[PRIMARY]上的这个查询很好…但不幸的是,只有当我传递第一个accountID时它才会返回(这意味着parentid为0的人).如果我传递任何子accountid,它将返回空白..请帮我解决这个问题..请详细说明-“如果我传递任何子accountid,它将返回空白”好的。老板,我做到了。我声明了一个ParentID变量,并收集了我传递给查询的AccountID的ParentID。ParentID使用了instaed of ParentID=0,感谢您的出色查询。