剑道图数据源-json

剑道图数据源-json,json,vb.net,wcf,Json,Vb.net,Wcf,目标:使用剑道ui图表组件绘制部门到项目的工作流 工作流的结构如下所示: 每个部门可能有多个战略,每个战略可能有多个计划,每个计划可能有多个项目 我有一个WCF服务,调用该服务时返回一个json字符串。 该服务调用一个存储过程,返回vb.net中的XML,然后我使用json.net将该XML转换为json 服务代码: Public Function GetStakeholderRelationshipMatrix(StakeholderId As Integer) As String T

目标:使用剑道ui图表组件绘制部门到项目的工作流 工作流的结构如下所示: 每个部门可能有多个战略,每个战略可能有多个计划,每个计划可能有多个项目

我有一个WCF服务,调用该服务时返回一个json字符串。 该服务调用一个存储过程,返回vb.net中的XML,然后我使用json.net将该XML转换为json

服务代码:

Public Function GetStakeholderRelationshipMatrix(StakeholderId As Integer) As String
    Try
        conn.Open()

        Dim da = New SqlDataAdapter()
        sCommand = New SqlCommand("uspGetRelationshipMatrix", conn)
        sCommand.CommandType = CommandType.StoredProcedure
        sCommand.Parameters.AddWithValue("@StakeholderId", StakeholderId)
        xmlDoc.LoadXml(sCommand.ExecuteScalar())
        Return JsonConvert.SerializeXmlNode(xmlDoc)
    Catch ex As Exception
        Return -1
    End Try
End Function
XML数据
在经历了一段时间的痛苦之后,我让它开始工作,并想与大家分享这些信息。这可能不是一个完美的方法,但它是实现这一目标的方法之一。 关键是提取为XML的SQL数据的结构

在SQL中,我最终执行了一个递归循环,提取数据并将其格式化为XML。因此,根的根节点包含一个项目部门-只能有一个部门,并且每个分层类别都有一个项目部分,其中项目部分作为项目的子级。结构的措辞相当困难,所以

SQL:

sql中的“我的数据”以以下方式以XML显示:

ERISA合规服务部 1696d3 新委员会 1696d3 方案3 1696d3 测试3 1696d3 传奇发展 1696d3 方案1 1696d3 测试1 1696d3 方案4 1696d3 测试2 1696d3
嗨,欢迎来到苏。你能更清楚地说明你的问题吗?读这个。但我必须补充一点,你在你的问题中很好地补充了很多信息我需要能够在剑道中设置分层数据源,以便在图表组件中填充数据。在花了一些时间研究之后,我认为问题在于我的数据在其层次结构中有多个级别,并且我无法使用剑道中的数据源层次结构模型正确设置层次结构。部门可能有许多战略,战略可能有许多计划,计划可能有许多项目。因此,问题是如何在剑道中设置分层数据源,以支持上述结构化数据源。我愿意使用json或xml作为数据。顺便说一句,我很抱歉在我第一次发布这个问题时没有直截了当
SELECT 
    --dStakeholder.StakeholderId AS '@Id', 
    dStakeholder.FunctionalDepartment as 'item/info' ,
    '#1696d3' as 'item/colorScheme',
    (SELECT 
        --dStrategy.StrategyId AS '@Id', 
        dStrategy.StrategyDescription 'item/info',
        '#1696d3' as 'item/colorScheme' ,
        (Select
            --dPrograms.ProgramId as '@Id',
            dPrograms.ProgramDescription 'item/info' ,
            '#1696d3' as 'item/colorScheme' ,
            (Select
                --dHeaders.ProjectId as '@Id',
                dHeaders.ProjectName  'item/info',
                '#1696d3' as 'item/colorScheme'
                    from
                    dbo.ProjectHeaders as dHeaders
                        inner join (select distinct projectid, programid, departmentid from dbo.ProjectHeaders) as pp
                            on dHeaders.ProjectId = pp.ProjectId
                        where pp.ProgramId = dPrograms.ProgramId and pp.departmentid = dStakeholder.Stakeholderid
                            FOR XML PATH(''), TYPE
            ) as 'item/items'
            from
            dbo.ProjectPrograms as dPrograms
            inner join (select distinct programid, strategyid , departmentid from dbo.ProjectHeaders) as sp
                on dPrograms.ProgramId = sp.ProgramId
            where sp.StrategyId = dStrategy.StrategyId and sp.departmentid = dstakeholder.stakeholderid
            FOR XML PATH(''), TYPE
        ) as 'item/items'
     FROM 
        dbo.ProjectStrategies as dStrategy
        inner join (select distinct strategyid , departmentid from dbo.ProjectHeaders) as bss
            on dStrategy.StrategyId = bss.StrategyId
     WHERE 
         dStakeholder.StakeholderId = bss.DepartmentId 
     FOR XML PATH(''), TYPE
    ) as 'item/items'
FROM 
    dbo.Stakeholders as dStakeholder
FOR XML PATH('root'), type