Kendo 图表在 Google Chrome 上显示不正确的结果。但在 Firefox 中结果正确吗?
Kendo Chart shows Incorrect results on Google Chrome. But correct result in Firefox?
我有一个生成的报告chart.I我正在显示这个关于预定义数据集的报告。
第一张图片来自 chrome browser.Second 来自 firefox.Firefox 显示了正确的数据。但是 chrome 显示不正确。可以看到月份顺序。
我在 Whosebug 中完成了 This 个问题。
我仍然得到类似于第一张图片的结果。
有人想出这类问题吗??
setDataSource: function (jsonData) {
myDataSource = new kendo.data.DataSource({
data: jsonData,
group: [{ "field": "Series" }],
sort: [{ "field": "Series", dir: "asc" }, { "field": "SortOrder", dir: "asc" }],
schema: {
model: {
fields: {
Category: {
"type": "string"
},
Series: {
"type": "number"
},
Value: {
"type": "number"
}
}
}
}
});
},
setupChart: function (id) {
$("#chart" + id).kendoChart({
dataSource: myDataSource,
title: {
text: "@Lables.LBL_PlanningProjection"
},
legend: {
position: "top"
},
chartArea: {
background: ""
},
seriesDefaults: {
type: "line"
},
series: [{
field: "Value"
}],
valueAxis: {
labels: {
format: "{0:N0}"
},
line: {
visible: true
},
majorUnit: 10000
},
categoryAxis: {
field: "Category",
labels: {
template: "#: value #",
rotation: 0
},
majorGridLines: {
visible: false
}
},
tooltip: {
visible: true,
format: "{0}",
template: "#= series.name #: #= value #"
}
});
}
这是 Chrome 实现 Array.sort
时出现的问题;
您可以通过在此处明确对数据源进行排序来修复它。
正如我在您的代码中看到的,这里有一个名为 SortOrder 的字段。我认为在原始代码中你已经得到这个,使用那个字段明确地对数据集进行排序。
检查您的控制器或后端代码以找到 SortOrder 属性。如果没有,您可以将其添加到您的后端逻辑中,以根据月份顺序明确地对您的数据集进行排序。
据我所知,您无法通过添加以下行在此处进行显式排序。
sort: [{ "field": "Series", dir: "asc" }, { "field": "Category", dir: "asc" }],
因为它会将您的数据集排序为第一张图片。
Apr , Aug, Dec , Feb , Jan , Jul , Jun, Mar , May, Nov , Oct, Sep
我认为这就是为什么原始代码有一个 属性 称为 SortOrder
。
我有一个生成的报告chart.I我正在显示这个关于预定义数据集的报告。
第一张图片来自 chrome browser.Second 来自 firefox.Firefox 显示了正确的数据。但是 chrome 显示不正确。可以看到月份顺序。
我在 Whosebug 中完成了 This 个问题。 我仍然得到类似于第一张图片的结果。 有人想出这类问题吗??
setDataSource: function (jsonData) {
myDataSource = new kendo.data.DataSource({
data: jsonData,
group: [{ "field": "Series" }],
sort: [{ "field": "Series", dir: "asc" }, { "field": "SortOrder", dir: "asc" }],
schema: {
model: {
fields: {
Category: {
"type": "string"
},
Series: {
"type": "number"
},
Value: {
"type": "number"
}
}
}
}
});
},
setupChart: function (id) {
$("#chart" + id).kendoChart({
dataSource: myDataSource,
title: {
text: "@Lables.LBL_PlanningProjection"
},
legend: {
position: "top"
},
chartArea: {
background: ""
},
seriesDefaults: {
type: "line"
},
series: [{
field: "Value"
}],
valueAxis: {
labels: {
format: "{0:N0}"
},
line: {
visible: true
},
majorUnit: 10000
},
categoryAxis: {
field: "Category",
labels: {
template: "#: value #",
rotation: 0
},
majorGridLines: {
visible: false
}
},
tooltip: {
visible: true,
format: "{0}",
template: "#= series.name #: #= value #"
}
});
}
这是 Chrome 实现 Array.sort
时出现的问题;
您可以通过在此处明确对数据源进行排序来修复它。
正如我在您的代码中看到的,这里有一个名为 SortOrder 的字段。我认为在原始代码中你已经得到这个,使用那个字段明确地对数据集进行排序。
检查您的控制器或后端代码以找到 SortOrder 属性。如果没有,您可以将其添加到您的后端逻辑中,以根据月份顺序明确地对您的数据集进行排序。
据我所知,您无法通过添加以下行在此处进行显式排序。
sort: [{ "field": "Series", dir: "asc" }, { "field": "Category", dir: "asc" }],
因为它会将您的数据集排序为第一张图片。
Apr , Aug, Dec , Feb , Jan , Jul , Jun, Mar , May, Nov , Oct, Sep
我认为这就是为什么原始代码有一个 属性 称为 SortOrder
。