2016-10-17 73 views
0

结果我都存储过程来产生像下面嵌套循环展示在同一行

enter image description here

一个结果,我想说明像下面这样的结果

这是

if (HeaderID and TitleNo same) 
show that results in same row 

else 
go to new row 

enter image description here

所以我写了像下面

     <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> 

但后来我发现了类似观点如下哪一个剃须刀页面错误

我不能连集团这个存储过程那么这将是对一些结果的影响。

如何在客户端处理此问题。

enter image description here

+0

使用'.GroupBy ()'通过'HeaderID'和'TitleNo'分组数据,并将其投影到您传递给视图的视图模型中。 –

+0

@StephenMuecke我可以有详细的例子 – kez

+0

现在忙 - 将是30分钟左右。 –

回答

1

你需要第一组由HeaderID您的数据和TitleN O和项目它变成一个视图模型( s)代表您需要显示的内容。

视图模型(重命名这些涉及到您的数据)

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> 
+0

是这样的,在你的linq查询'ChildVM'中,'ParentVM'应该在'VM'模型中类? – kez

+0

对不起,在查询中有一对错字 - 请参阅编辑 –

+0

哇的工作非常准确:) – kez

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> 
} 
+0

好吧我会试试这个 – kez

+0

如何与两个值groupby – kez

+1

单独的属性与','像=> m.TitileNo,m.HeaderID。你需要使用g.Key.TitleNo来访问特定的组密钥 –