如何在 MVC 中使用模型创建 kendo 饼图
How to create kendo pie chart with model in MVC
我正在尝试使用 Kendo UI 通过 MVC 中的模型和控制器创建一个饼图,这将显示两种食物的总数,但我无法得到由于到附加的错误。
要在饼图中显示的类型:
1)饮料和
2)用餐
我指的是这种图表。
此 link 使用 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)#")
)
)
生成饼图的Kendo方法需要对象数组,每个对象代表饼图中的一个部分。每个对象必须包含一个 属性 作为值(每个段将占整体的百分比)和段的名称。此外,它可以包含 属性 颜色(覆盖默认颜色)和 bool
以指示段是否为 'exploded'.
您的 PieGraphModel
应该看起来像(您可以随意命名属性)
public class PieGraphModel
{
public string Name { get; set; }
public float Value { get; set; }
public string Color { get; set; } // optional
public bool Explode { get; set; } // optional
}
并创建一个包含 2 个段的饼图,"Meals" 和 "Beverages",分别为 1/3 和 2/3,您的控制器方法将是
List<PieGraphModel> model = new List<PieGraphModel>()
{
new PieGraphModel(){ Name = "Meals", Value = 33.33F },
new PieGraphModel(){ Name = "Beverages", Value = 66.67F }
};
return Json(model);
并在视图中
.Series(series => series
.Pie(m => m.Value, m => m.Name)
.Padding(0)
)
请注意,表达式必须与属性名称相匹配。如果您还想指定 Color
和 Explode
,它将是
.Series(series => series
.Pie(m => m.Value, m => m.Name, m => m.Color, m => m.Explode)
.Padding(0)
)
如果数据是
,将输出this pie chart
List<PieGraphModel> model = new List<PieGraphModel>()
{
new PieGraphModel(){ Name = "Hydro", Value = 22.0F, Color = "#03a9f4", Explode = true },
new PieGraphModel(){ Name = "Solar", Value = 2.0F, Color = "#ff9800"},
new PieGraphModel(){ Name = "Nuclear", Value = 49.0F, Color = "#fad84a"},
new PieGraphModel(){ Name = "Wind", Value = 27.0F, Color = "#4caf50"}
};
我正在尝试使用 Kendo UI 通过 MVC 中的模型和控制器创建一个饼图,这将显示两种食物的总数,但我无法得到由于到附加的错误。
要在饼图中显示的类型: 1)饮料和 2)用餐
我指的是这种图表。
此 link 使用 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)#")
)
)
生成饼图的Kendo方法需要对象数组,每个对象代表饼图中的一个部分。每个对象必须包含一个 属性 作为值(每个段将占整体的百分比)和段的名称。此外,它可以包含 属性 颜色(覆盖默认颜色)和 bool
以指示段是否为 'exploded'.
您的 PieGraphModel
应该看起来像(您可以随意命名属性)
public class PieGraphModel
{
public string Name { get; set; }
public float Value { get; set; }
public string Color { get; set; } // optional
public bool Explode { get; set; } // optional
}
并创建一个包含 2 个段的饼图,"Meals" 和 "Beverages",分别为 1/3 和 2/3,您的控制器方法将是
List<PieGraphModel> model = new List<PieGraphModel>()
{
new PieGraphModel(){ Name = "Meals", Value = 33.33F },
new PieGraphModel(){ Name = "Beverages", Value = 66.67F }
};
return Json(model);
并在视图中
.Series(series => series
.Pie(m => m.Value, m => m.Name)
.Padding(0)
)
请注意,表达式必须与属性名称相匹配。如果您还想指定 Color
和 Explode
,它将是
.Series(series => series
.Pie(m => m.Value, m => m.Name, m => m.Color, m => m.Explode)
.Padding(0)
)
如果数据是
,将输出this pie chartList<PieGraphModel> model = new List<PieGraphModel>()
{
new PieGraphModel(){ Name = "Hydro", Value = 22.0F, Color = "#03a9f4", Explode = true },
new PieGraphModel(){ Name = "Solar", Value = 2.0F, Color = "#ff9800"},
new PieGraphModel(){ Name = "Nuclear", Value = 49.0F, Color = "#fad84a"},
new PieGraphModel(){ Name = "Wind", Value = 27.0F, Color = "#4caf50"}
};