Hi masmas,
For getting sum of boys and girls use jquery to calculate.
I have added two columns after foreach loop to display the Sum for Boys and Girls.
also assign a class for gender tr to loop through the td and calculate.
Check this example. Now please take its reference and correct your code.
Model
public class UserRange
{
public int Count { get; set; }
public string AgeRange { get; set; }
public string Gender { get; set; }
}
Controller
public class HomeController : Controller
{
// GET: /Home/
public ActionResult Index()
{
Dictionary<string, List<UserRange>> urn = new Dictionary<string, List<UserRange>>();
List<UserRange> ur = new List<UserRange>();
ur.Add(new UserRange { Count = 2, AgeRange = "Age from 1 to 4", Gender = "girls" });
ur.Add(new UserRange { Count = 2, AgeRange = "Age from 1 to 4", Gender = "boys" });
ur.Add(new UserRange { Count = 2, AgeRange = "Age from 15 to 24", Gender = "girls" });
ur.Add(new UserRange { Count = 4, AgeRange = "Age from 15 to 24", Gender = "boys" });
ur.Add(new UserRange { Count = 1, AgeRange = "Age from 25 to 46", Gender = "boys" });
ur.Add(new UserRange { Count = 4, AgeRange = "Age from 25 to 46", Gender = "girls" });
ur.Add(new UserRange { Count = 1, AgeRange = "Age from 5 to 14", Gender = "girls" });
ur.Add(new UserRange { Count = 2, AgeRange = "Age from 5 to 14", Gender = "boys" });
ur.Add(new UserRange { Count = 1, AgeRange = "age over 47+", Gender = "boys" });
ur.Add(new UserRange { Count = 1, AgeRange = "age over 47+", Gender = "girls" });
ur.Add(new UserRange { Count = 2, AgeRange = "Age Under 1 year", Gender = "girls" });
ur.Add(new UserRange { Count = 2, AgeRange = "Age Under 1 year", Gender = "boys" });
urn.Add("12/2018 test3", ur);
ur = new List<UserRange>();
ur.Add(new UserRange { Count = 2, AgeRange = "Age from 15 to 24", Gender = "girls" });
ur.Add(new UserRange { Count = 1, AgeRange = "Age from 25 to 46", Gender = "boys" });
ur.Add(new UserRange { Count = 1, AgeRange = "Age from 25 to 46", Gender = "girls" });
urn.Add("12/2018 test1", ur);
ur = new List<UserRange>();
ur.Add(new UserRange { Count = 10, AgeRange = "age over 47+", Gender = "girls" });
ur.Add(new UserRange { Count = 12, AgeRange = "age over 47+", Gender = "boys" });
ur.Add(new UserRange { Count = 15, AgeRange = "Age Under 1 year", Gender = "girls" });
ur.Add(new UserRange { Count = 18, AgeRange = "Age Under 1 year", Gender = "boys" });
urn.Add("12/2018 test2", ur);
return View(urn);
}
}
View
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<KeyValuePair<String,List<UserRange>>>>" %>
<%@ Import Namespace="_Sum_Rows.Models" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Index</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
<script type="text/javascript">
$(function () {
CalculateBoysGirlsTotal();
});
function CalculateBoysGirlsTotal() {
var trs = $('tr[class="gender"]');
for (var rows = 0; rows < trs.length; rows++) {
var boysTotal = 0;
var girlsTotal = 0;
var trGender = trs[rows];
var trCount = $(trGender).next();
for (var i = 0; i < $(trGender).find('td').length - 2; i++) {
if ($(trGender).find('td').eq(i).html().trim() == 'girls') {
boysTotal += parseInt(isNaN($(trCount).find('td').eq(i).html()) ? 0 : $(trCount).find('td').eq(i).html());
}
else if ($(trGender).find('td').eq(i).html().trim() == 'boys') {
girlsTotal += parseInt(isNaN($(trCount).find('td').eq(i).html()) ? 0 : $(trCount).find('td').eq(i).html());
}
}
$(trCount).find('td').eq($(trGender).find('td').length - 1).html(boysTotal);
$(trCount).find('td').eq($(trGender).find('td').length - 2).html(girlsTotal);
}
}
</script>
</head>
<body>
<table border="1" class="table table-responsive table-bordered table-hover table-striped "
style="height: 145px; text-align: center; border: solid 1px; border-radius: 13px;">
<% foreach (var key in Model)
{ %>
<tr><td colspan="14"><center><%: key.Key %></center></td></tr>
<tr>
<% foreach (var ageRange in key.Value)
{ %>
<td><%: ageRange.AgeRange%></td>
<% } %>
<%--Added two colums for display sum--%>
<td>Sum Boys</td>
<td>Sum Girls</td>
</tr>
<tr class="gender">
<% foreach (var gender in key.Value)
{ %>
<td><%: gender.Gender%></td>
<% } %>
<%--Added two colums for display sum--%>
<td>boys</td>
<td>girls</td>
</tr>
<tr class="count">
<% foreach (var count in key.Value)
{ %>
<td><%: count.Count%></td>
<% } %>
<%--Added two colums for display sum--%>
<td></td>
<td></td>
</tr>
<% } %>
</table>
</body>
</html>
Screenshot
