从Kendo UI Chart中显示详细信息窗口

时间:2015-04-09 16:08:06

标签: asp.net-mvc kendo-ui kendo-asp.net-mvc

我正在使用Kendo UI MVC

@(Html.Kendo().Chart<Admin.Models.SiteActivityDaily>()
        .Name("chart")
        .Legend(l => l
           .Position(ChartLegendPosition.Bottom)
        )
        .Tooltip(true)
        .DataSource(ds => ds.Read(read => read.Action("GetSiteActivity", "Site")))
        .CategoryAxis(a => a
            .Categories(model => model.SiteDescription)
            .MajorGridLines(lines => lines.Visible(false))
        )
        .Series(series =>
        {
            series.Bar(d => d.ActivityCount).Name("Today");
        })

    )

在单击每个栏时,是否可以以某种方式显示带有详细信息的剑道窗口,将变量“SiteID”传递给装有ajax的局部视图?

3 个答案:

答案 0 :(得分:1)

您可以使用kendo detailtemplate,但想要在窗口中显示详细信息。

因此,将详细信息模板包装在kendo窗口中。

http://demos.telerik.com/kendo-ui/grid/detailtemplate

答案 1 :(得分:1)

您应该使用plotAreaClick事件来捕获点击的值。见Docs

    <div id="chart"></div>
    <script>
      function chart_plotAreaClick(e) {
        console.log(e.value);
        //Here u open kendo window with value parameter
      }

      var chart = $("#chart").data("kendoChart");
      chart.bind("plotAreaClick", chart_plotAreaClick);
    </script>

答案 2 :(得分:0)

您需要处理SeriesClick event,然后将值传递给Kendo窗口。 Kendo Window执行的操作将返回需要显示的局部视图。

<script>
    function handleSeriesClick(e) {
        var wnd = $("#MyWindow").data("kendoWindow");
        wnd.refresh({
            url: "someUrl",
            data: { serieValue: e.value) }
        });
        wnd.bind("refresh", function () {
            wnd.center();
            wnd.open();
        });
    }
</script>

@(Html.Kendo().Chart<Admin.Models.SiteActivityDaily>()
    .Name("chart")
    .Legend(l => l
       .Position(ChartLegendPosition.Bottom)
    )
    .Tooltip(true)
    .DataSource(ds => ds.Read(read => read.Action("GetSiteActivity", "Site")))
    .CategoryAxis(a => a
        .Categories(model => model.SiteDescription)
        .MajorGridLines(lines => lines.Visible(false))
    )
    .Series(series =>
    {
        series.Bar(d => d.ActivityCount).Name("Today");
    })
    .Events(e => e.SeriesClick("handleSeriesClick"))
)

@(Html.Kendo().Window()
    .Name("MyWindow")
    .Visible(false)
)