Как скрыть столбец в таблице на основе количества дней в выбранном месяце? - PullRequest
0 голосов
/ 15 мая 2019

На мой взгляд, есть средство выбора даты для фильтров по выбранному месяцу и одна таблица. В таблице 32 столбца, где столбец 1-32 - это дата. Я хочу спросить, как скрыть столбец 29,30,31, когда я выбираю февраль (потому что в феврале только даты до 28)? А также, если я выберу апрель, столбец 31 исчезнет. ниже мой код, спасибо.

private AttendecencesViewModel LoadDataAttendence(AttendecencesViewModel model)
{
   queryJoin = db.AttendenceVs.ToList();
   if (model.SearchPayrollMonth != null)
   {
        queryJoin = queryJoin.ToList().Where(x => x.PayrollMonth == model.SearchPayrollMonth);
   }
   foreach (AttendenceV attendenceV in queryJoin)
   { 
       AttendenceViewModel detail = new AttendenceViewModel();
       detail.EmployeeName = attendenceV.EmployeeName;
       detail.PresenceDay01 = attendenceV.PresenceDay01;
       detail.PresenceDay02 = attendenceV.PresenceDay02;
       detail.PresenceDay03 = attendenceV.PresenceDay03;
       attedenceViewModel.AttendenceDetails.Add(detail);
   }
   return attedenceViewModel;
}
public ActionResult Search(AttendecencesViewModel model)
{
   attedenceViewModel = LoadDataAttendence(model);
   return View("Index", attedenceViewModel);
}

View

 @Html.TextBoxFor(model => model.SearchMonth, new { @class = "form-control" })
<table class="table">
    <tr>
      <th>Name</th>
      <th>1</th>
      <th>2</th>
      <th>3</th> //I only made it until the 3rd,
      .
      .
      <th>31</th>
    </tr>
     @foreach (MyExercise.Data.ViewModel.AttendenceViewModel item in Model.AttendenceDetails)
     { 
        <tr>
            <td>@Html.DisplayFor(modelItem => item.EmployeeName)</td>
            <td>@Html.DisplayFor(modelItem => item.PresenceDay01)</td>
            <td>@Html.DisplayFor(modelItem => item.PresenceDay02)</td>
            <td>@Html.DisplayFor(modelItem => item.PresenceDay03)</td>
             .
             .
            <td>@Html.DisplayFor(modelItem => item.PresenceDay31)</td>
        </tr>
     }
</table>

1 Ответ

0 голосов
/ 15 мая 2019

Можно использовать DateTime.DaysInMonth(<year>, <month>) для получения количества дней в указанном году / месяце. Используя это значение, вы можете скрыть / показать дополнительные столбцы:

@foreach (MyExercise.Data.ViewModel.AttendenceViewModel item in Model.AttendenceDetails)
{
    <tr>
        <td>@Html.DisplayFor(modelItem => item.EmployeeName)</td>
        <td>@Html.DisplayFor(modelItem => item.PresenceDay01)</td>
        <td>@Html.DisplayFor(modelItem => item.PresenceDay02)</td>
        @* ... *@
        <td>@Html.DisplayFor(modelItem => item.PresenceDay28)</td>
        @if (daysInMonth >= 29)
        {
            <td>@Html.DisplayFor(modelItem => item.PresenceDay29)</td>  
        }

        @if (daysInMonth >= 29)
        {
            <td>@Html.DisplayFor(modelItem => item.PresenceDay28)</td>
        }

        @* until 31...use the same idea in thead *@
    </tr>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...