У меня есть gridview, который в настоящее время извлекает все записи из таблицы. Кроме того, у меня есть 4 dropdownlists, которые привязаны к всем возможным значениям для каждого из 4 столбцов, а списки dropdownlists устанавливаются как элементы управления в gridview для запроса к базе данных.Как наилучшим образом фильтровать gridview на основе множественных списков dropdownlists для баз данных в VB ASP.net и SQL
В каждом списке downdownlist я добавил пустое значение в начало, которое является значением по умолчанию, и в любое время, когда это значение выбрано, база данных использует это для возврата всех результатов (без фильтра в этом столбце при нулевом значении).
Это текущий запрос к базе данных.
SELECT
Week_Ending, Employee, Project, Status_Of_Employment
FROM
Times
WHERE
(@Project IS NULL OR Project LIKE @Project)
AND (@Employee IS NULL OR Employee LIKE @Employee)
AND (@Status_Of_Employment IS NULL OR Status_Of_Employment LIKE @Status_Of_Employment)
AND (@WeekEnding IS NULL OR Week_Ending = CONVERT(datetime, @WeekEnding, 103))
Этот запрос позволяет пользователю осуществлять фильтрацию по любому одному или комбинации из 4-х колонок
Это решение работает очень хорошо, за исключением вопроса, что на начальной загрузки страницы, так как все 4 DropDownLists установлены к пустому значению он возвращает все результаты из базы данных, что занимает очень много времени из-за объема данных.
То, что я хотел бы сделать, - это предотвратить отображение сетки из результатов на начальной загрузке страницы до тех пор, пока не будет применен один из фильтров. Я знаю, что вместо значения Пустоты, используемого по умолчанию, я мог бы использовать некоторые недопустимые данные, такие как «Пожалуйста, выберите фильтр» для каждого раскрывающегося списка, но в идеале я бы хотел, чтобы пользователь не должен был выбирать пустой параметр в каждом раскрывающемся списке, чтобы не выбирать фильтр, поскольку большинство запросов обычно представляют собой только один фильтр или два.
Есть ли простой способ остановить запрос перед начальной загрузкой страницы или передовой опыт фильтрации с помощью dropdownlists, которые я просматриваю?
Благодаря
Возможно, вы загрузили 'GridView' в событие' Page_Load', удалите его. – Bharadwaj
Он не загружается в событие Page_Load. Но будучи gridview с настроенным источником данных, который имеет запрос с допустимыми параметрами управления, он автоматически отображает результаты, соответствующие запросу. – MayneIT
Измените его для загрузки с кода. Тогда вы можете контролировать, когда загружать. – Bharadwaj