Как отобразить сгруппированный идентификатор IEnumerable данных в виде HTML-данных? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть таблица данных, и мне нужно сгруппировать значения, потому что только в одном столбце (Paxs) нет повторяющихся данных, остальные данные должны отображаться в одной строке.

Это так: Фактический

и должно быть: Должно быть

<table class="table table-bordered table-condensed table-striped">
        <caption>Serviços</caption>
        <thead>
          <tr>
            <th>Código</th>
            <th>Descrição Resumida</th>
            <th>Status</th>
            <th>Identificador Reserva</th>
            <th>Paxs</th>
            @*<th>Documentos Anexados</th>
              <th></th>
              <th>CTB</th>
              <th>Comercial</th>
              <th>Site</th>*@
          </tr>
        </thead>

        <tbody>
          @foreach (var itemServico in Model.Servicos.Take(10))
          {
            <tr>
              <td>@itemServico.CodServico</td>
              <td>@itemServico.DescTipo</td>
              <td>@itemServico.StatusReserva</td>
              <td>@itemServico.IdentReserva</td>
              <td>@itemServico.PaxsReserva</td>
              <td>
                <table>
                  @foreach (var itemFileIntra in Model.ServicoDocs)
                  {
                    <tr>
                      <td>@itemFileIntra.NomeArquivo</td>
                      <td>
                        <span class="input-group-addon">
                          <button aria-hidden="false" class="md-icon-button 
                              md-accent md-button md-ink-ripple">
                            <i class="glyphicon glyphicon-remove"></i>
                          </button>
                          <button aria-hidden="false" class="md-icon-button 
                              md-accent md-button md-ink-ripple">
                            <i class="glyphicon glyphicon-search"></i>
                          </button>
                          <button aria-hidden="false" class="md-icon-button 
                              md-accent md-button md-ink-ripple">
                            <i class="glyphicon glyphicon-envelope"></i>
                          </button>
                        </span>
                      </td>
                      <td>@itemFileIntra.CTB</td>
                      <td>@itemFileIntra.COM</td>
                      <td>@itemFileIntra.Site</td>
                    </tr>
                  }
                </table>
              </td>

            </tr>
          }
        </tbody>

В одном столбце содержатся разные данные, остальные данные должны отображаться в одной строке.

1 Ответ

0 голосов
/ 18 апреля 2019

Будет проще, если вы создадите модель, отражающую данные, которые вы хотите отобразить. Таким образом, манипулирование происходит в коде, и представление просто следует тому, что в модели.

Это не самый элегантный пример. Считай это иллюстрацией.

У вас есть это:

public class TheModelYouHave
{
    public string Servico { get; set; }
    public string DescTipo { get; set; }
    public string StatusReserva { get; set; }
    public string IdentReserva { get; set; }
    public string PaxsReserva { get; set; }
}

То, что вы хотите, это:

public class TheModelYouWant
{
    public Dictionary<string, IEnumerable<TheModelYouHave>> ModelsGroupedByPaxsReserva { get; } 
        = new Dictionary<string, IEnumerable<TheModelYouHave>>();
}

Это словарь. Ключом является каждое отдельное значение PaxsReserva, а значением является набор всех элементов, имеющих одинаковое значение для PaxsReserva.

Чтобы отобразить модель, которая вам нужна,

public static TheModelYouWant ToTheModelYouWant(IEnumerable<TheModelYouHave> source)
{
    var grouped = source.GroupBy(src => src.PaxsReserva, src => src);
    var result = new TheModelYouWant();
    foreach(var group in grouped)
        result.ModelsGroupedByPaxsReserva.Add(group.Key, group);
    return result;
}

Теперь по вашему мнению:

@foreach(var paxs in Model.ModelsGroupedByPaxsReserva.Keys)

, а затем получить отдельные модели, принадлежащие этому ключу:

var items = Model.ModelsGroupedByPaxsReserva[paxs];

(я называю это items, потому что я не знаю, что это за вещи.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...