DATA IN THE CSHTML FILE after using Midhun Mundayadan suggestion but chart still not working
The data in the controller is collected from the SQL database correctly, also it does exist in the viewData in view Cshtml.
///Model
public class CaseMetricsModel
{
public int Year { get; set; }
public int WeekNumber { get; set; }
public int NumberOfCases { get; set; }
public int Size { get; set; }
public CaseMetricsModel(int year, int weeknr, int number, int size)
{
Year = year;
WeekNumber = weeknr;
NumberOfCases = number;
Size = size;
}
}
public class CaseMetricsList
{
public List<Abnamro.Nfr.Fdda.Edis20.Web.Models.CaseMetricsModel> List { get; set; }
public CaseMetricsList()
{
List = new List<Abnamro.Nfr.Fdda.Edis20.Web.Models.CaseMetricsModel>();
}
}
///Controller
public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
//fill the data for the chart
//create a new, empty list
Models.CaseMetricsList model = new Models.CaseMetricsList();
//load the csv file into the model (list)
SqlConnection sqlConn = new SqlConnection(Abnamro.Nfr.Fdda.Edis20.Common.Helper.GetConnectionString());
using (SqlDataAdapter dataAdapter = new SqlDataAdapter("select top(25) DATEPART(year, InsertedDateTime) as yearnr, DATEPART(week, InsertedDateTime) as weeknr, count(*) as numberofcases, sum(sourcecasesize) as Size from tblcases where CaseStatusId <> 4 group by DATEPART(year, InsertedDateTime), DATEPART(week, InsertedDateTime) order by DATEPART(year, InsertedDateTime), DATEPART(week, InsertedDateTime) asc ", sqlConn))
{
// create the DataSet
DataSet dataSet = new DataSet();
// fill the DataSet using our DataAdapter
dataAdapter.Fill(dataSet);
DataTable table = dataSet.Tables[0];
foreach (DataRow dr in table.Rows)
{
model.List.Add(new Models.CaseMetricsModel(Convert.ToInt32(dr["Yearnr"]),
Convert.ToInt32(dr["weeknr"].ToString()),
Convert.ToInt32(dr["numberofcases"]),
Convert.ToInt32(dr["Size"])));
}
ViewData["usaData"] = model;
}
return View();
}
///View
<script>
Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: 'New cases in Relativity per week'
},
xAxis: {
type: 'category',
categories: [
@foreach(var item in @ViewData["usaData"] as IEnumerable<Abnamro.Nfr.Fdda.Edis20.Web.Models.CaseMetricsList>)
{
@item.List.Select(x => x.WeekNumber)
}
],
labels: {
rotation: -45,
style: {
fontSize: '13px',
fontFamily: 'Verdana, sans-serif'
}
}
},
yAxis: {
min: 0,
title: {
text: '# cases'
}
},
legend: {
enabled: false
},
tooltip: {
pointFormat: 'Number of new cases per week.'
},
series: [{
name: 'Year/week',
color: '#009286', // abnamro color
data: @foreach(var item in @ViewData["usaData"] as IEnumerable<Abnamro.Nfr.Fdda.Edis20.Web.Models.CaseMetricsList>)
{
@item.List.Select(x => x.NumberOfCases)
}
dataLabels: {
enabled: true,
rotation: -90,
color: '#FFFFFF',
align: 'right',
format: '{point.y:.1f}', // one decimal
y: 10, // 10 pixels down from the top
style: {
fontSize: '13px',
fontFamily: 'Verdana, sans-serif'
}
}
}]
});
</script>
But the chart is not being displayed and the @foreach is returning an exception. How should the data in the view(using viewData or ViewBag) be displayed in order to display the graph correctly?. Thank you.and this my expected result.
I think you should assign
ViewData["usaData"] = model.List;
And in view
@foreach(var item in @ViewData["usaData"] as IEnumerable<CaseMetricsModel>)
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments