目标:使用kendo ui图表组件绘制部门以投影工作流程 工作流程结构如下: 每个部门可能有多个策略,每个策略可能有多个程序,每个程序可能有多个项目。Kendo Diagram Datasource - json
我有一个WCF服务,当被调用时返回一个JSON字符串。 该服务调用一个存储过程返回XML,在vb.net然后我将该XML转换为json(使用json.net)。
服务代码:
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数据
<Departments>
<Department Id="7" Name="Information Technology Department">
<Strategies Id="21" Name="Increase Revenue">
<Programs Id="45" Name="Program1">
<Projects Id="4" Name="test3" />
</Programs>
<Programs Id="49" Name="Program4">
<Projects Id="2" Name="Test1" />
<Projects Id="3" Name="Test2" />
</Programs>
</Strategies>
</Department>
</Departments>
Json的转换数据:
{"d":"{\"Departments\":{\"Department\":{\"@Id\":\"7\",\"@Name\":\"Information Technology Department\",\"Strategies\":{\"@Id\":\"21\",\"@Name\":\"Increase Revenue\",\"Programs\":[{\"@Id\":\"45\",\"@Name\":\"Program1\",\"Projects\":{\"@Id\":\"4\",\"@Name\":\"test3\"}},{\"@Id\":\"49\",\"@Name\":\"Program4\",\"Projects\":[{\"@Id\":\"2\",\"@Name\":\"Test1\"},{\"@Id\":\"3\",\"@Name\":\"Test2\"}]}]}}}}"}
我我一直无法将数据(json)绑定到图表组件,以便成功显示工作流程。我需要将json字符串绑定到图表组件的帮助。
剑道代码:
<div id="visual"></div>
var dsRelationshipMatrix = new kendo.data.DataSource({
transport: {
read: function (options) {
$.ajax({
url: "wcf service return json string",
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "GET",
success: function (result) {
var obj = $.parseJSON(result.d);
if (obj == null) {
options.success([]);
} else {
options.success(obj);
}
},
error: function (result) {
options.error(result)
}
});
}
},
schema: {
data: function (data) {
return data
}
}
}); //closes data source
function createDiagram() {
$("#visual").kendoDiagram({
dataSource: new kendo.data.HierarchicalDataSource({
data: dsRelationshipMatrix,
schema: {
model: {
children: "Strategies"
}
}
}),
layout: {
type: "layered"
},
shapeDefaults: {
visual: visualTemplate
},
connectionDefaults: {
stroke: {
color: "#979797",
width: 2
}
}
});
var diagram = $("#visual").getKendoDiagram();
diagram.bringIntoView(diagram.shapes);
}
嗨,欢迎来到SO。你能否更清楚地说明你的问题?阅读本文[http://stackoverflow.com/help/how-to-ask](http://stackoverflow.com/help/how-to-ask)。但是我必须补充说明你的问题很好地添加了很多信息。 :) – 2014-09-23 21:54:56
我需要能够在kendo中设置分层数据源,以便填充图组件中的数据。花了一些时间研究之后,我认为问题在于我的数据在其层次结构中有多个层次,并且我无法使用kendo中的数据源层次模型正确设置层次结构。部门可能有许多策略,策略可能有很多程序和程序可能有很多项目。所以问题是如何在kendo中设置分层数据源来支持结构化的提及。我愿意使用json或xml来获取数据。 – 2014-09-25 20:08:34
顺便说一句,我很抱歉不直接当我第一次发布“问题” – 2014-09-25 20:12:22