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 将该项目添加到正确的列中?
我在尝试将 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 将该项目添加到正确的列中?