如何基于Umbraco匹配表

时间:2019-05-27 09:04:22

标签: c# umbraco umbraco6

我在尝试将th与表中的td元素进行匹配时遇到了一些问题,我的代码工作正常,但我显示了数据,但没有按th的顺序显示。 我能做些什么才能假装使它正常工作? 任何帮助都会被重视

enter image description here 我的代码

<div class="table-responsive ">
                <table class="table table-striped ">
                  <thead>
                    <tr>
                      <th scope="col">Fundo</th>
                      <th scope="col">IFI</th>
                      <th scope="col">Prospeto</th>
                      <th scope="col">KiiD</th>
                      <th scope="col">Mercado Alvo</th>
                      <th scope="col">Síntese Mensal</th>
                      <th scope="col">Relatório Mensal</th>
                      <th scope="col">Relatório Semestral</th>
                      <th scope="col">Relatório Anual</th>
                    </tr>
                  </thead>
                 <tbody>

                     @foreach (var page in selection.Children){

                        if(page.Children.Count() > 0){ 

                        foreach(var subpage in page.Children){

                            var listaPdf = subpage.GetPropertyValue<IEnumerable<IPublishedContent>>("listaPdfsFundos");

                               if(listaPdf == null) {
                                    listaPdf = new List<IPublishedContent>();
                                }

                                 <tr>

                                 <td >@subpage.Name</td>

                                 @if(listaPdf != null){

                                    foreach(var row in listaPdf) {

                                    var name = Umbraco.Field(row, "categoriaDoFundo");

                                    var id = Umbraco.Field(row, "documentos").ToString();

                                    var mediaItem = Umbraco.TypedMedia(id);

                                    var url = mediaItem.Url;

                                    <td> <a href="@url" target="_blank"><i class="far fa-file-pdf"></i> </a> </td>

                                    }   
                                }   
                       </tr>    
                    }
                }
             }

              </div>

1 个答案:

答案 0 :(得分:1)

这与数据的结构以及试图在具有固定列数的表中进行布局的方式有关

无论从图片还是HTML来看,似乎都有9列。

您用

填充listaPdf
var listaPdf = subpage.GetPropertyValue<IEnumerable<IPublishedContent>>("listaPdfsFundos");`

之后,您编写第一列

<td >@subpage.Name</td>

绝对可以。这样就减少了1列,还有8列。

现在,您的问题开始了。为了使您的代码正常工作,您必须写出8 * {<td>个项目,以匹配您的<th>标头(已写入1个)和8)。

如果listaPdf不完全包含8个项目,则它将无法正常工作。上面的图片表明listPdf包含3个项目,因此您写出了4 * {<td>,与9 * <th>

不匹配

所以首先要检查的是listaPdf是否包含8个项目。如果不是这样,您就无法使以上代码正常工作,而没有找到某种方法将每个mediaItem链接到正确的列。

每个mediaItem中是否有任何东西可以将该项目链接到正确的列?