Member 14663996 Ответов: 1

Разрыв линии на доске. Отображение заголовка один раз в строке


@foreach (var data in ViewBag.listesite)
            {

        <tr>
            <th>@data.Title</th>           
            <td>@data.Marque </td>
            <td>@data.Model </td>
            <td>@data.Numero </td>
            <td>@data.Plage </td>
        </tr>


Что я уже пробовал:

The value of the title field does not change for each loop.
I would like the title field value to be displayed once, on a single line

j snooze

Затем удалите его из цикла for each и поместите html-код только для заголовка над циклом for each.

1 Ответов

Рейтинг:
4

Richard Deeming

Предполагая, что ваш список содержит Count собственность:

@{
    int rowCount = ViewBag.listesite.Count;
    bool firstRow = true;
}
@foreach (var data in ViewBag.listesite)
{
    <tr>
        @if (firstRow)
        {
            firstRow = false;
            <th rowspan="@rowCount">@data.Title</th>
        }
        <td>@data.Marque</td>
        <td>@data.Model</td>
        <td>@data.Numero</td>
        <td>@data.Plage</td>
    </tr>
}

РЕДАКТИРОВАТЬ: Если в списке есть несколько заголовков, то сгруппируйте записи:
@{
    var allItems = (IEnumerable<YourType>)ViewBag.listesite;
}
@foreach (var group in allItems.GroupBy(i => i.Title))
{
    int rowCount = group.Count();
    bool firstRow = true;
    
    foreach (var data in group)
    {
        <tr>
            @if (firstRow)
            {
                firstRow = false;
                <th rowspan="@rowCount">@data.Title</th>
            }
            <td>@data.Marque</td>
            <td>@data.Model</td>
            <td>@data.Numero</td>
            <td>@data.Plage</td>
        </tr>
    }
}
NB: Вам нужно будет привести список к конкретному типу, так как методы расширения не могут быть вызваны на dynamic ценности.


Member 14663996

ваше решение работает, когда есть один заголовок для всех записей. Но есть название для каждой группы записей

Richard Deeming

Затем вам нужно будет сгруппировать записи по названию.

Member 14663996

в контроллере или в представлении ?

Richard Deeming

Я обновил свое решение с примером выполнения этого в представлении, но вы могли бы сделать это в контроллере, если бы захотели.

Member 14663996

благодарить.
YourType est класс или таблица ?

Member 14663996

Система.Которого вызывается invalidcastexception : не удалось д'effectuer ООН литой d'ООН Objet в де тип System.Коллекции.Generic.List`1[WebApplication_SRP.Models.Сайт]' в тип System.Коллекции.Общий.IEnumerable`1[WebApplication_SRP.Models.C10_Communication

Richard Deeming

var allItems = (IEnumerable<WebApplication_SRP.Models.Site>)ViewBag.listesite;

Member 14663996

название никогда не Афиша

Richard Deeming

Опечатка в моем обновлении; заменить bool firstRow = false; с bool firstRow = true;

Member 14663996

Т Огромное спасибо.
теперь это работает.


bool firstRow = true; (в начале)

Member 14663996

Да, вы правы . Спасибо