У меня есть несколько фильтров для данных таблицы, представленных выпадающими списками, но данные таблицы действительно огромны, и процесс зависает на несколько минут, пока вся таблица не будет отрисована;только тогда будет представлена таблица, и я смогу использовать эти фильтры.
Я хочу иметь доступ к фильтрам перед представлением данных;Я не хочу ждать загрузки таблицы.Это можно сделать, разделив фильтры на другое представление / контроллер, но я хочу обработать метод index()
.
Я попытался удалить часть, в которой процесс проверяет, установлены ли фильтры, но затем он будет работать, если я установлю только все фильтры.
Соответствующий код:
Function Index(SelectedTimeType As System.Nullable(Of Integer), SelectedTimeStatus As System.Nullable(Of Integer), SelectedProject As System.Nullable(Of Integer), SelectedTask As System.Nullable(Of Integer)) As ActionResult
Dim tipovi = unitOfWork.TimeTypeRepository.Get(orderBy:=Function(q) q.OrderBy(Function(d) d.Opis))
ViewBag.SelectedTimeType = New SelectList(tipovi, "TimeTypeID", "Opis", SelectedTimeType)
Dim statusi = unitOfWork.TimeStatusRepository.Get(orderBy:=Function(q) q.OrderBy(Function(d) d.Opis))
ViewBag.SelectedTimeStatus = New SelectList(statusi, "TimeStatusID", "Opis", SelectedTimeStatus)
Dim projekti = unitOfWork.ProjectRepository.Get(orderBy:=Function(q) q.OrderBy(Function(d) d.Opis))
ViewBag.SelectedProject = New SelectList(projekti, "ProjekatID", "Opis", SelectedProject)
Dim taskovi = unitOfWork.TaskRepository.Get(orderBy:=Function(q) q.OrderBy(Function(d) d.Opis))
ViewBag.SelectedTask = New SelectList(taskovi, "TaskID", "Opis", SelectedTask)
Dim timeTypeID As Integer = SelectedTimeType.GetValueOrDefault()
Dim timeStatusID As Integer = SelectedTimeStatus.GetValueOrDefault()
Dim projekatID As Integer = SelectedProject.GetValueOrDefault()
Dim taskID As Integer = SelectedTask.GetValueOrDefault()
Return View(unitOfWork.TimeTrackingRepository.Get(
filter:=Function(d) Not (SelectedTimeType.HasValue And SelectedTimeStatus.HasValue And SelectedProject.HasValue And SelectedTask.HasValue) OrElse (d.TimeTypeID = timeTypeID And d.TimeStatusID = timeStatusID And d.ProjectID = projekatID And d.TaskID = taskID),
orderBy:=Function(q) q.OrderBy(Function(d) d.TimeTrackingID)))
End Function