Umbraco中如何根据<th></th>匹配table<td></td>

How to match table <td></td> based on <th></th> in Umbraco

我在尝试将 th 与 table 上的 td 元素匹配时遇到了一些问题,我的代码工作正常,但我显示了数据,但不是按 th 的顺序显示。 我该怎么做才能使它像假装一样工作? 任何帮助将不胜感激

我的代码

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

这完全与您的数据结构以及您尝试在具有固定列数的 table 中布局数据的方式有关

无论如何,从你的照片和你的 html 来看,你似乎有 9 列。

您用

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

过了一会儿,你写了第一列

<td >@subpage.Name</td>

这绝对没问题。所以这是向下 1 列,还有 8 列。

现在你的问题开始了。为了使您的代码工作,您必须写出 8 * <td> 项以匹配您的 <th> headers(1 已写)+ 8)。

如果 listaPdf 不包含恰好 8 个项目,则它将不起作用。您上面的图片表明 listPdf 包含 3 个项目,因此您写出了 4 * <td> 与 9 * <th>

不匹配

所以首先要检查listaPdf是否包含8项。如果不是这样,如果不找到某种方法 link 每个 mediaItem 到正确的列,你就不能使上面的代码工作。

每个 mediaItem 中是否有任何内容 link 将该项目添加到正确的列中?