我有存储过程来生成如下结果
我想显示如下结果
是
if (HeaderID and TitleNo same)
show that results in same row
else
go to new row
所以我写了Razor页面,如下面的
<tbody>
@foreach (var item in Model)
{
<tr>
<td rowspan="2" class="vertaline-mid">@item.TitleNo</td>
<td rowspan="2" class="vertaline-mid">@item.TitleImage</td>
@foreach (var image in Model)
{
<td class="image-td">
<a>@image.SubtitleName</a>
<span>@image.SubtitleValue</span>
</td>
}
</tr>
<tr>
@foreach (var imageid in Model)
{
<td>@imageid.CaseID</td>
}
</tr>
}
</tbody>
但是接下来我的观点就像是错误的
我甚至无法对此存储过程进行分组,这将对某些结果产生影响。
如何在客户端处理此问题。
答案 0 :(得分:2)
您需要先按HeaderID
和TitleN
o对数据进行分组,然后将其投影到代表您需要显示的视图模型中。
查看模型(将这些重命名为与您的数据相关)
public class ParentVM
{
public string TitleNo { get; set; }
public int TitleImage { get; set; }
public IEnumerable<ChildVM> SubTitles { get; set; }
}
public class ChildVM
{
public string SubtitleName { get; set; }
public string SubTitleValue { get; set; }
public int CaseID { get; set; }
}
,查询将是
var model = yourContext.GroupBy(x => new { x.TitleNo, x.HeaderID }).Select(x => new ParentVM
{
TitleNo = x.Key.TitleNo,
TitleImage = x.FirstOrDefault().TitleImage,
SubTitles = x.Select(y => new ChildVM
{
SubtitleName = y.SubtitleName,
SubTitleValue = y.SubTitleValue,
CaseID = y.CaseID,
})
});
return View(model);
并在视图中
@model IEnumerable<ParentVM>
....
<table>
@foreach(var parent in Model)
{
<tr>
<td>@parent.TitleNo </td>
<td>@parent.TitleImage</td>
@foreach(var child in parent.SubTitles)
{
<td>
<div>@child.SubtitleName</div>
<div>@child.SubTitleValue</div>
<div>@child.CaseID</div>
</td>
}
</tr>
}
</table>
答案 1 :(得分:0)
你可以使用linq组功能。 我现在在空港,所以我无法保证代码是完全正确的,但这个想法就是这个
@foreach(var g in Model.GroupBy(m=>m.TitleNo){
<tr>
<td>@g.Key</td>
<td>
<td>
@foreach(var gi in g){whatever codes you need to display}
</td>
</tr>
}