2016-12-16 154 views
0

在foreach中显示项目我有一个建在我的剃刀桌子,我想要它时,机构的名称是重复的,使他是一个空的领域。有没有办法做到这一点?当在剃刀净重MVC

筛选plunker: https://plnkr.co/qitrBwCksORassfJkpss

剃刀:

<style> 
 
    table { 
 
     width: 100%; 
 
    } 
 

 
    th { 
 
     background-color: #673673; 
 
     color: white; 
 
     font-size: 14px; 
 
     text-align: center; 
 
    } 
 

 
    tr { 
 
     font-size: 12px; 
 
     text-align: center; 
 
    } 
 

 
    th, td { 
 
     padding: 8px; 
 
    } 
 

 
    tr:nth-child(even) { 
 
     background-color: #f2f2f2; 
 
    } 
 

 

 
    header h1 span { 
 
     text-align: center; 
 
    } 
 
</style> 
 
<header style="text-align:center;"> 
 
    <h1>Aperam South America</h1> 
 
    <h4> 
 
     Relatório de Demandas por Instituições <br /> 
 
     @DateTime.Now 
 
    </h4> 
 
</header> 
 
<main style="margin-top: 5%;"> 
 
    <table id="report-table"> 
 
     <tr> 
 
      <th>Instituition</th> 
 
      <th>Descrição da demanda</th> 
 
      <th>Periodicidade</th> 
 
      <th>Tempo Estimado</th> 
 
      <th>Situação Demanda</th> 
 
     </tr> 
 

 

 
     @foreach (var query in Model.GroupBy(i => i.COD_IDENT_INSTI).Distinct()) 
 
     { 
 
      foreach (var demanda in query) 
 
      { 
 
       <tr> 
 
        <td>@demanda.INSTITUICAO_SOCIAL.NOM_FANTA_INSTI</td> 
 
        <td>@demanda.DES_COMPL_DEMAN)</td> 
 
        <td>@demanda.PERIODICIDADE.DES_COMPL_COMPT</td> 
 
        <td>@demanda.VLR_TEMPO_ESTIM</td> 
 
        <td>@demanda.COD_SITUA_DEMAN</td> 
 
       </tr> 
 
      } 
 

 
     } 
 
    </table> 
 
</main> 
 
<footer></footer>

我的控制器:

public ActionResult GerarRelatorio(RelatorioViewModel relatorio) 
    { 
     switch (relatorio.Tipo) 
     { 
      case EnumTipoRelatorio.Nenhum: 
       TempData["Message"] = new[] { Resources.relatorio_tipo_errro, "erro" }; 
       return RedirectToAction("Relatorios", "Relatorio"); 

      case EnumTipoRelatorio.demandasPorInstituicoes: 
       try 
       { 
        var demandas = Mapper.Map < ICollection<DEMANDA>, ICollection<DemandaViewModel>>(_demandaService.ObterTodos().ToList()); 
        var instituicao = Mapper.Map<ICollection<INSTITUICAO_SOCIAL>,ICollection<InstituicaoSocialViewModel>>(_instituicaoSocialService.ObterTodos().ToList()); 

        var demandasPorInstituicoes = from d in demandas join i in instituicao 
                on d.COD_IDENT_INSTI equals i.COD_IDENT_INSTI 
                where i.DAT_CRIAC_REGIS >= relatorio.InicioFiltro && 
                i.DAT_CRIAC_REGIS <= relatorio.FimFiltro 
                select d; 



        //return new MvcRazorToPdf.PdfActionResult("DemandasPorInstituicoes", demandasPorInstituicoes, (writer, document) => { 
        // document.SetPageSize(PageSize.A3); 
        //}); 

        return View("DemandasPorInstituicoes", demandasPorInstituicoes); 
       } 

       catch (Exception ex) 
       { 
        TempData["Message"] = new[] { Resources.relatorio_erro, "erro" }; 
        return RedirectToAction("Relatorios", "Relatorio"); 
       } 
     } 

     //var instituicao = _instituicaoSocialService.ObterTodos().ToList(); 
     TempData["Message"] = new[] { Resources.relatorio_tipo_errro, "erro" }; 
     return RedirectToAction("Relatorios", "Relatorio"); 
    } 

我的视图模型:

public class DemandaViewModel 
{ 
    [Key] 
    [Display(Name = "Código")] 
    public int COD_IDENT_DEMAN { get; set; } 

    [Display(Name = "Instituição")] 
    public int COD_IDENT_INSTI { get; set; } 

    [Display(Name = "Periodicidade")] 
    public int COD_IDENT_PERIO { get; set; } 

    [Display(Name = "Descrição")] 
    [Required(ErrorMessage = "A demanda deve possuir um nome.")] 
    [MaxLength(128, ErrorMessage = "O nome da demanda deve possuir no máximo {1} caracteres.")] 
    public string DES_COMPL_DEMAN { get; set; } 

    [Display(Name = "Local da ação")] 
    [Required(ErrorMessage = "O departamento deve possuir um nome.")] 
    [MaxLength(128, ErrorMessage = "O nome do departamento deve possuir no máximo {1} caracteres.")] 
    public string DES_LOCAL_DEMAN { get; set; } 

    [Display(Name = "Tempo Estimado")] 
    [MaxLength(64, ErrorMessage = "O nome do departamento deve possuir no máximo {1} caracteres.")] 
    public string VLR_TEMPO_ESTIM { get; set; } 

    [Display(Name = "Quantidade de voluntários")] 
    public short NUM_VOLUN_DEMAN { get; set; } 

    [Display(Name = "Custo Estimado")] 
    public decimal? VLR_CUSTO_ESTIM { get; set; } 

    [Display(Name = "Classificação")] 
    public short? COD_CLASF_DEMAN { get; set; } 

    [Display(Name = "Observação")] 
    [Required(ErrorMessage = "A demanda deve possuir uma observação.")] 
    [MaxLength(1024, ErrorMessage = "A observação da demanda deve possuir no máximo {1} caracteres.")] 
    public string DES_OBSER_ACAO { get; set; } 

    [Display(Name = "Situação")] 
    public short? COD_SITUA_DEMAN { get; set; } 

    public virtual InstituicaoSocialViewModel INSTITUICAO_SOCIAL { get; set; } 

    public virtual PeriodicidadeViewModel PERIODICIDADE { get; set; } 

    public virtual ICollection<RegistroAcaoViewModel> REGISTROACAO { get; set; } 

    public virtual ICollection<CompetenciaViewModel> COMPETENCIA { get; set; } 

    public virtual ICollection<VoluntarioViewModel> VOLUNTARIO { get; set; } 
} 

回答

0

没有“NoRepeat”属性可以使用您的UI应用于columnn。如果您不在控制器中执行此操作,那么您需要在视图中应用逻辑。

 @foreach (var query in Model.GroupBy(i => i.COD_IDENT_INSTI).Distinct()) 
     { 
      string _InstitutionTest=""; 
      string _InstitutionValue=""; 

      foreach (var demanda in query) 
      { 
       if(demanda.INSTITUICAO_SOCIAL.NOM_FANTA_INSTI !=_InstitutionTest){ 
        _InsitutionTest=demanda.INSTITUICAO_SOCIAL.NOM_FANTA_INSTI ; 
        _InstitutionValue=_InsitutionTest; 
       }else{ 
        _InstitutionValue=""; 
       } 

       <tr> 
        <td>@_InstitutionValue</td> 
        <td>@demanda.DES_COMPL_DEMAN)</td> 
        <td>@demanda.PERIODICIDADE.DES_COMPL_COMPT</td> 
        <td>@demanda.VLR_TEMPO_ESTIM</td> 
        <td>@demanda.COD_SITUA_DEMAN</td> 
       </tr> 
      } 

     } 
+0

谢谢罗斯!你的代码真的派上用场。将来我也会修理我的控制器。 –