我有这样的观点
@(Html.Kendo().Chart()
.Name("chart-store")
.Title("Percentage Store Rent")
.Legend(legend => legend
.Position(ChartLegendPosition.Bottom)
)
//.SeriesColors(new string[] { "#42a7ff", "#666666", "#999999", "#cccccc", "#013A5E" })
.Series(series => {
series.Pie(new dynamic[] {
new {category = "Living Room",value = 35},
new {category = "Dinning Room",value = 25},
new {category = "Study Room",value = 20},
new {category = "Bedroom",value = 10},
new {category = "Outdoor",value = 10}
})
.Labels(labels => labels
.Visible(true)
.Position(ChartPieLabelsPosition.OutsideEnd)
.Template("#= category # - #= kendo.format('{0:P}', percentage)#")
.Background("transparent")
);
})
.Tooltip(tooltip => tooltip
.Visible(true)
.Template("#= category # - #= kendo.format('{0:P}', percentage) #")
)
)
该系列.Pie数据仍然是静态的。我想从数据库获取数据..我已经完成了下面的代码。但只提供一行数据..
查看
@(Html.Kendo().Chart()
.Name("chart-store")
.Title("Percentage Store Rent")
.Legend(legend => legend
.Position(ChartLegendPosition.Bottom)
)
//.SeriesColors(new string[] { "#42a7ff", "#666666", "#999999", "#cccccc", "#013A5E" })
.Series(series => {
series.Pie(new dynamic[]{@g**.app.web.Controllers.Tran******Controller.GetPieChartByRoom()})
.Labels(labels => labels
.Visible(true)
.Position(ChartPieLabelsPosition.OutsideEnd)
.Template("#= category # - #= kendo.format('{0:P}', percentage)#")
.Background("transparent")
);
})
.Tooltip(tooltip => tooltip
.Visible(true)
.Template("#= category # - #= kendo.format('{0:P}', percentage) #")
)
)
CONTROLLER
public static object GetPieChartByRoom() {
List<string> mHBM = new List<string>();
mHBM.Add(mcHBM_SALES);
mHBM.Add(mcHBM_BusinessPartner);
mHBM.Add(mcHBM_Employee);
mHBM.Add(mcHBM_LIST);
mHBM.Add(mcHBM_GeneralListType);
ISession voISession = NHibernateSession.OpenSession(mHBM);
var getRoom = voISession.QueryOver<Lists>().Where(w=>w.Type==17).List();
var voTable = new object();
foreach (var ListRoom in getRoom)
{
var RoomCount = voISession.QueryOver<SalesAgreementDetail>().Where(w => w.Room == ListRoom.ListID).RowCount();
voTable = new { category = ListRoom.ListName, value = RoomCount };
}
return voTable;
}
谢谢你的关注,抱歉我的英语不好:D
答案 0 :(得分:0)
在此代码中
var voTable = new object();
foreach (var ListRoom in getRoom)
{
var RoomCount = voISession.QueryOver<SalesAgreementDetail>().Where(w => w.Room == ListRoom.ListID).RowCount();
voTable = new { category = ListRoom.ListName, value = RoomCount };
}
return voTable;
您正在循环中为voTable
分配一个新对象,而不是将新对象添加到其中,这就是您在图中只获得一行的原因,因为您最后只传递了一行
您需要的是将新对象添加到voTable
变量中。如下所示
var voTable = new List<object>(); //changes here
foreach (var ListRoom in getRoom)
{
var RoomCount = voISession.QueryOver<SalesAgreementDetail>().Where(w => w.Room == ListRoom.ListID).RowCount();
voTable.Add(new { category = ListRoom.ListName, value = RoomCount }); //changes here
}
return voTable;