у меня есть некоторые проблемы с попыткой сопоставить th с элементами 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>
Это все связано со структурой ваших данных и тем, как вы пытаетесь разместить их в таблице с фиксированным количеством столбцов.
В любом случае, судя по вашей картинке и вашему 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
, что связывает этот элемент с правильным столбцом?
Рад, что вы разобрались :)
@wingyp решение состояло в том, чтобы сделать в бэк-офисе в umbraco 8 нулей элементов или нет, поэтому всегда будет 8 <td>