如何使用Kendo UI开发平移和缩放功能

时间:2014-04-25 12:05:37

标签: c# razor zoom bar-chart kendo-dataviz

我正在使用带有C#.Net MVC代码的Kendo UI并创建了一个条形图。现在在这个条形图中,我想开发一个平移和缩放功能。

http://demos.telerik.com/kendo-ui/dataviz/bar-charts/pan-and-zoom.html

在上面的链接中,这个功能开发得到了清楚的解释,但它是在Html中,我想在C#.net MVC平台的razor页面上开发它。

当我使用其javascript方法时,每个滚动图表高度总是增加以进行缩放。这对于缩放功能是不可行的,因此请提供建议以使其正确。

提前致谢!

1 个答案:

答案 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>

不要忘记将脚本放在剃刀文件中的图表之前。