我是使用MVC的新手,我对在表格中汇总行数据有疑问。
一些背景知识:
首先,我使用普通的SQL语句收集大量数据。我使用DataTable来存储数据。然后我用普通的HTML表输出数据。这非常好用,我没有问题。
我现在想总结每一行的所有值,并在底行显示结果。
我知道我可以在数据层中完成此操作。循环遍历数据表并将行的值汇总到一个新行。然后最后将“摘要行”作为最后一行附加。
一些代码:
<tr class="header">
<th>Person</th>
<th>NrOfRows</th>
</tr>
<% foreach (System.Data.DataRow row in Model.Rows) { %>
<tr>
<td><%: row["Name"].ToString()%></td>
<td><%: row["NrOfRows"].ToString()%></td>
</tr>
请您告诉我哪种方式最好/最简单
答案 0 :(得分:1)
在ControllerAction中进行计算。像这样......
public ActionResult Index()
{
var rows = this.repository.GetAll();
this.ViewData["total"] = rows.AsEnumerable().Select(o => o["NrOfRows"]).Select(o => int.Parse(o)).Sum();
return this.View(rows);
}
答案 1 :(得分:1)
您应该考虑是否要将数据“打包”到模型(类)中。在模型部分的mvc项目中添加类:
public class YourModel
{
public string Name
public int NrOfRows
public YourModel(string name, int nrOfRows)
{
Name = name;
NrOfRows = nrOfRows;
}
}
然后在您的控制器方法中执行:
public ActionResult Summarize(/*parameters list*/)
{
var rows = (get data) //In here you assign here your table content
ViewData.Model = rows.Select(row => new YourModel(row["Name"], int.Parse(row["NrOfRows"])));
ViewData["nrRowCount"] = rows.Select(row => row.NrOfRows).Sum();
return View();
}
然后你去看法:
<table>
<th>Person</th>
<th>nrOfRows</th>
<%: foreach(var yourModel in Model) { :%>
<tr>
<td>yourModel.Name</td>
<td>yourModel.NrOfRows</td>
</tr>
<%: } :%>
<tr>
<td>Summary: </td>
<td> <%: ViewData["nrRowCount"] %:></td>
</tr>
</table>