2016-10-17 93 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來訪問特定的組密鑰 –