@if (ViewData["post"] != null)
{
foreach (var item in ViewData["post"] as IEnumerable<Employee.Models.ApplyJob>)
{
<tr>
<td>@item.PerferenceNo</td>
<td>@item.JobName</td>
<td>@item.Location</td>
<td>Action</td>
</tr>
}
}
如何在 PerferenceNo 和 JobName 上使用行范围,使用MVC4&gt;
答案 0 :(得分:2)
您需要将以前的值与当前值进行比较,但不需要使用rowspan
(这会使其不必要地复杂化)。当单元格与先前的值匹配时,您可以生成一个空的<td>
元素。
@{
var data = ViewData["post"] as IEnumerable<Employee.Models.ApplyJob>;
int perferenceNo = 0;
string jobName = "";
}
@foreach (var item in data)
<tr>
@if (item.PerferenceNo == perferenceNo)
{
<td></td>
}
else
{
perferenceNo = item.PerferenceNo;
<td>@item.PerferenceNo</td>
}
... // ditto for JobName
<td>@item.Location</td>
</tr>
}
我强烈建议您将模型传递给视图,而不是从ViewData
如果您确实想使用rowspan
属性,则代码需要
@foreach (var item in items)
{
int perferenceNoCount = data.Count(x => x.PerferenceNo == item.PerferenceNo);
int jobNameCount = data.Count(x => x.JobName == item.JobName);
<tr>
@if (item.PerferenceNo != perferenceNo)
{
perferenceNo = item.PerferenceNo;
<td rowspan="@(perferenceNoCount)">@item.ID</td>
}
@if (item.JobName != jobName)
{
jobName = item.JobName;
<td rowspan="@(jobNameCount)">@item.Name</td>
}
<td>@item.Location</td>
</tr>
}
但是你真的应该在这种情况下使用视图模型和rowspan值的属性,并在控制器中运行你的查询。