【发布时间】:2016-10-04 06:33:32
【问题描述】:
我正在尝试使用 Kendo UI 通过 MVC 中的模型和控制器创建饼图,该图将显示两种食物的总数,但由于附加错误,我无法获得结果。
饼图中显示的类型: 1)饮料和 2)膳食
我指的是这种图表。
此链接使用 foreach 显示了多个图表,但我只关心将总收入与膳食和饮料区分开来的单个图表。
我的控制器是:
public ActionResult _SpainElectricityProduction()
{
List<PieGraphModel> objList = new List<PieGraphModel>();
for (int i = 0; i < 2; i++)
{
if (i == 0)
{
objList.Add(new PieGraphModel { coke = 10, pepsi = 20, Type = "Beverages", total = 30 });
}
else
{
objList.Add(new PieGraphModel { chiniese = 50, italian = 40, Type = "Meals", total = 90 });
}
}
return Json(objList);
}
@(Html.Kendo().Chart<MvcRepo_Kendo.Models.PieGraphModel>()
.Name("chart")
.HtmlAttributes(new { @class = "small-chart" })
.Legend(legend => legend
.Visible(false)
)
.DataSource(ds =>
{
ds.Read(read => read.Action("_SpainElectricityProduction", "Home"));
}
)
.Series(series => series
.Pie(model => model.total)
.Padding(0)
)
.Tooltip(tooltip => tooltip
.Visible(true)
.Format("{0:N0}")
.Template("#= category # - #= kendo.format('{0:P}', percentage)#")
)
)
【问题讨论】:
-
您在控制器中创建的数据对于饼图没有意义,因此不清楚您实际想要显示的内容。要了解它是如何工作的,请将控制器中的代码替换为
var data = new[]{ new { type = "Beverages", percent = 25 }, new { type = "Meals", percent = 75 } }; return Json(data);,然后在视图中替换为.Series(series => series.Pie(m => m.percent , m => m.type).Padding(0) )。它将生成一个包含 2 个部分的饼图,其中饮料为 1/4,膳食为 3/4。 -
斯蒂芬,感谢您宝贵的时间。我已经尝试过您给出的方法,效果非常好,但只需要您对此发表意见。我在您的代码模板中看到了 75 的百分比,但在我的情况下,我只有一个通过出售膳食或饮料赚取的金额。它可以是任何东西。例如:我从膳食中赚取了 5000 美元,从饮料中赚取了 10000 美元。那么,为了显示正确的信息,我是否必须将此总金额转换为某种百分比,否则将由工具本身处理?
-
我不知道(我从未使用过剑道),但我假设如果您要提供值 10000 和 5000(即加起来为 15000),该方法将足够聪明,可以转换为百分比(即 66.67 和 33.33)——至少我会这样写。你所能做的就是试试看会发生什么:)
标签: asp.net-mvc-4 kendo-ui kendo-asp.net-mvc kendo-chart kendo-ui-mvc