问题描述
public class Meter {
public String Substation { get; set; }
public String Service { get; set; }
public String Account { get; set; }
public String Rate { get; set; }
public String Customer { get; set; }
public String Location { get; set; }
public String SerialNumber { get; set; }
public DateTime? Start { get; set; }
public DateTime? End { get; set; }
public int Count { get; set; }
}
和另一个名为 Meters
的类,它是 Meter
的集合:
public class Meters : List<Meter> {
public Meters Subset(String service) {
var result = new Meters();
var data = this.Where(x => x.Service == service);
result.AddRange(data);
return result;
}
public Meters TopRate(int max = 10) {
var result = new Meters();
var data = this.OrderBy(x => x.AccountRate).ToArray();
do {
var item = data[result.Count];
result.Add(item);
} while (result.Count < max);
return result;
}
public Meters TopSubstation(int max = 10) {
var result = new Meters();
var data = this.OrderBy(x => x.Substation).ToArray();
do {
var item = data[result.Count];
result.Add(item);
} while (result.Count < max);
return result;
}
}
在我的 ASP.NET MVC 4 控制器中,我在 JsonResult 中获取这些数据:
public async Task<JsonResult> GetReport([DataSourceRequest] DataSourceRequest request,String serviceType = null) {
var result = new DataSourceResult();
_meters = new Domain.Meters();
try {
var report = await _portal.ReadGapReport(_reportID);
if ((serviceType == "Electric") || (serviceType == "Gas") || (serviceType == "Water")) {
_meters.AddRange(report.Subset(serviceType));
} else {
_meters.AddRange(report);
}
result = _meters.ToDataSourceResult(request);
} catch (Exception err) {
LoggerUtil.Error("ReadGapReport Error",err);
result.Errors = err.Message;
}
return new JsonResult { Data = result,MaxJsonLength = Int32.MaxValue };
}
这很好用,而且我在 Kendo Grid 中看到了数据:
@(Html.Kendo().Grid<DataAnalysis.Domain.Meter>()
.Name("grid")
.Columns(c => {
c.Bound(o => o.Substation).Title("Substation");
c.Bound(o => o.Service).Title("Service");
c.Bound(o => o.Account).Title("Account");
c.Bound(o => o.Rate).Title("Rate");
c.Bound(o => o.Customer).Title("Customer");
c.Bound(o => o.Location).Title("Location");
c.Bound(o => o.SerialNumber).Title("Meter");
c.Bound(o => o.Start).Title("Start");
c.Bound(o => o.End).Title("End");
c.Bound(o => o.Days).Title("Days");
})
.sortable(o => o.sortMode(GridSortMode.SingleColumn))
.Pageable(p => p.Enabled(false))
.Resizable(resizable => resizable.Columns(true))
.Scrollable(s => s.Endless(true))
.ToolBar(x => x.Custom().Text("Export").HtmlAttributes(new { href = "#",id = "export" }))
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("GetReport","Report"))
.Events(e1 => {
e1.Error("onError");
})
)
.AutoBind(false)
.Events(e => e.DataBound("onDataBound")))
但是,我需要收集和处理要在 HighlandChart.org pie charts 中显示的摘要信息。
在databound事件中,如何读取数据进行统计?
function onDataBound(e) {
var grid = $(hashId).data('kendoGrid');
for (var i = 0; i < grid.columns.length; i++) {
grid.autoFitColumn(i);
}
$.each(e,function (index) {
console.log('data(' + index + ') = ' + e[index]);
});
var charts = { // chart id,title,chart type,data[],xAxis,yAxis
1: ['piefigcontainer1','Meter Count per Substation (Top 10)','pie',[]],2: ['piefigcontainer2','Meter Count per Feeder (Top 10)',3: ['piefigcontainer3','Meter Count per Cycle (Top 10)',4: ['piefigcontainer4','Meter Count per Rate (Top 10)',5: ['barfigcontainer1','Meter Count per Gap Tier (in Days)','bar',[],[0,10,20,30,40,50,60,70,80],['0 to 10','10 to 100','100 to 365','More than 365']
]
};
$.each(charts,function (key,value) {
Highcharts.chart(charts[key][0],{
chart: {
plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,type: charts[key][2]
},credits: { text: '' },title: { text: charts[key][1] },plotOptions: {
pie: {
allowPointSelect: true,cursor: 'pointer',dataLabels: { enabled: true },showInLegend: true
}
},});
});
};
上面有一小块我试着去读取返回的数据:
$.each(e,function (index) {
console.log('data(' + index + ') = ' + e[index]);
});
但是,它似乎返回了各种 HTML,而不是我预期的数据。
我需要能够收集数据以显示在汇总图表中。
在 javascript 中,想法是用 charts
填充 push
数组,但我没有得到正确的数据。
而且,我不知道如何读取数据的细节,例如 Substation
或 Customer
字段。
这可以做到吗,我是不是做错了,或者我是否在 C# 中创建了一个不会在 javascript 中实现我想要的设计?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)