我正在使用带有C#.Net MVC代码的Kendo UI并创建了一个条形图。现在在这个条形图中,我想开发一个平移和缩放功能。
http://demos.telerik.com/kendo-ui/dataviz/bar-charts/pan-and-zoom.html
在上面的链接中,这个功能开发得到了清楚的解释,但它是在Html中,我想在C#.net MVC平台的razor页面上开发它。
当我使用其javascript方法时,每个滚动图表高度总是增加以进行缩放。这对于缩放功能是不可行的,因此请提供建议以使其正确。
提前致谢!
答案 0 :(得分:1)
嗨我在尺寸增加时遇到了同样的问题,我通过设置图表高度来修复它:
只需添加:
.ChartArea(c =>c .Height(200)
像这样:
@(Html.Kendo().Chart(data)
.Name("Previsions")
.Legend(legend => legend.Position(ChartLegendPosition.Top))
.DataSource(d => d.PageSize(40))
.ChartArea(c =>c .Height(200) .Background("none"))
.Series(series => { ...
.Events(e => e
.Drag("onDrag")
.DragEnd("onDragEnd")
.Zoom("onZoom")))
我的用于平移和缩放的javascript方法是:
<script >
// Minimum/maximum number of visible items
var MIN_SIZE = 10;
var MAX_SIZE = 80;
// Optional sort expression
// var SORT = { field: "val", dir: "asc" };
var SORT = {};
// Minimum distance in px to start dragging
var DRAG_THR = 20;
// State variables
var viewStart = 0;
var viewSize = 40;
var newStart;
// Drag handler
function onDrag(e) {
var chart = e.sender;
var ds = chart.dataSource;
var delta = Math.round(e.originalEvent.x.initialDelta / DRAG_THR);
if (delta != 0) {
newStart = Math.max(0, viewStart - delta);
newStart = Math.min(@data.Count - viewSize, newStart);
ds.query({
skip: newStart,
page: 0,
pageSize: viewSize,
sort: SORT
});
}
}
function onDragEnd() {
viewStart = newStart;
}
// Zoom handler
function onZoom(e) {
var chart = e.sender;
var ds = chart.dataSource;
viewSize = Math.min(Math.max(viewSize + e.delta, MIN_SIZE), MAX_SIZE);
ds.query({
skip: viewStart,
page: 0,
pageSize: viewSize,
sort: SORT
});
// Prevent document scrolling
e.originalEvent.preventDefault();
}
</script>
不要忘记将脚本放在剃刀文件中的图表之前。