@Alexsbr

Как формировать таблицу html с изменяющимся набором данных?

Здравствуйте.
Делаю веб приложение календарь событий на С# MVC Есть календарь (таблица), при нажатии на ячейку(день) должна формироваться новая таблица html (расписание на день) где есть 2 столбца.
В первом указано время(часы от 0 до 24) во втором столбце собственно название самого события.
События не могут пересекаться. В представление формирующее эту таблицу прилетает уже сортированный по времени, список из всех событий в этот день (List). Я сделал таблицу с выводом всех событий , но задача такая чтобы события не повторялись в таблице, сейчас они повторяются.
В идеале должно выглядеть так:
a9f859c8dc3141a2a91f438045d8ba47.jpg
А выглядит так
925d9ae2fa244ca997285c37e94675d6.jpg
т.е события в ячейках повторяются.
Прошу помощи , или хотя бы наводку, как такое можно реализовать.
Никак не могу понять как сделать чтобы ячейки объединялись, учитывая что количество событий всегда разное.

Исходный код:

<table border="1" class="schedule-table">


                @{

                    int mem_id = 0;
                    for (int i = 0; i < 24; i++)
                    {
                        <tr>
                            <td class="time">@i :00</td>
                            <td>
                                @for (int j = 0; j < Model.eventList.Count; j++)
                                {
                                    DateTime data = Model.curentDate;
                                    DateTime start = new DateTime(data.Year, data.Month, data.Day, i, 0, 0);
                                    DateTime end = new DateTime(data.Year, data.Month, data.Day, i, 0, 0).AddHours(1);

                                    if (!(Model.eventList.ElementAt(j).StartTime >= end || Model.eventList.ElementAt(j).EndTime < start))
                                    {
                                        if (mem_id == Model.eventList.ElementAt(j).id) // если id совпадает , то не печатаем крестик
                                        {
                                            @String.Format("{0}:{1}-{2}",
                                            Model.eventList.ElementAt(j).DescriptionEvent, Model.eventList.ElementAt(j).StartTime.ToShortTimeString(), Model.eventList.ElementAt(j).EndTime.ToShortTimeString());
                                        }
                                        else                                        // если id не совпадает то печатаем крестик и запоминаем новый id
                                        {
                                            @String.Format("{0}:{1}-{2}",
                                            Model.eventList.ElementAt(j).DescriptionEvent, Model.eventList.ElementAt(j).StartTime.ToShortTimeString(), Model.eventList.ElementAt(j).EndTime.ToShortTimeString());
                                            <img class="delete-icon" src="~/Content/img/Delete-icon.png" onclick="RemoveEvent(@Model.eventList.ElementAt(j).id, '@Model.eventList.ElementAt(j).StartTime')">
                                            mem_id = (Model.eventList.ElementAt(j).id);
                                        }
                                    }
                                }
                            </td>
                        </tr>
                    }
                }
            </table>
  • Вопрос задан
  • 243 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Не смешивайте верстку и логику! В идеале все вычисления должны проиходить до вызова вьюхи (в контроллере, сервисе и т.п.), а во вьюху должна приходить уже готовая вью-модель, данные которой останется лишь расставить в нужные места верстки.

Цикл for был бы симпатичныее в виде foreach, без этого .ElementAt(j)

ЗЫ rowspan
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы