2010-07-29 3 views
2

Итак, у меня есть .Net-сайт, который я создал, а часть его - это страница, на которой можно отфильтровать, запросить и отобразить таблицу базы данных. Затем я разрешаю пользователям выбирать отдельную строку для редактирования или удаления. Обе эти функции выполняются на отдельных страницах. Недавно мне было предложено добавить функциональность на первую страницу, чтобы обеспечить фильтрацию запросов между посещениями. Например, если пользователь редактирует строку, затем возвращается в таблицу, фильтры, которые они выбрали, все еще должны быть на месте.Отображение .Net страницы внутри страницы

Мой вопрос - это самый простой способ сделать это. Проблема в том, что многие из фильтров динамически генерируются на основе другой таблицы в БД, поэтому они не статически кодируются на странице. Один из вариантов - передать строку фильтра в строку запроса, но это кажется непрактичным из-за возможной большой длины, которая может быть. Я также подумал о том, чтобы открыть новое окно, но есть проблемы с безопасностью и дублированием данных. Я мог бы также использовать iframe для загрузки страниц и скрыть исходный контент до завершения редактирования, но я не уверен, как получить доступ к кликам из iframe на соседней странице, или если это даже хорошая идея.

Любая помощь/предложения были бы весьма признательны.

Спасибо!

+0

Вы можете использовать сеанс для хранения последних фильтров. – Fosco

ответ

0

Вы можете использовать переменные сессии для хранения Dictionary<string, object> или что-то подобное, который содержит ключи, идентифицирующих каждую таблицу и значение, представляющий фильтр. Фактические параметры фильтрации не должны содержать слишком много информации для хранения для данного сеанса.

Не зная, как ваше приложение захватывает концепцию фильтра, немного сложно предложить полностью квалифицированное решение, но сеанс кажется подходящим вариантом.

+0

Ну, на странице фильтр - это раскрывающийся список, но в основном это способ выписать SQL, который появится в предложении WHERE. Каждый идентификатор фильтра является идентификатором столбца SQL, а значения ListItems являются возможными значениями столбца. Это все строки или ints. Если я сделаю то, что вы говорите, и сохраните объект Dictionary в сеансе для каждой страницы таблицы, это будет дорогостоящим? Я не вижу, чтобы данный пользователь посещал более одной или двух уникальных страниц таблицы, если они не являются администратором, поскольку каждый пользователь будет заниматься только своей собственной группой. – rpf3

+0

Это кажется мне жизнеспособным. Стоимость хранения данных такого типа в сеансе не должна быть высокой. Это зависит от того, как вы хотите сериализовать значения фильтра. Возможно, если вы определили класс «TableFilter», в который были включены различные параметры фильтрации, вы могли бы сериализовать словарь . –

3

Вы можете инкапсулировать свою функциональность в User Control, которую могут использовать обе страницы.

How to: Convert Web Forms Pages into ASP.NET User Controls

+0

+1. Этот вопрос не похож на случай для другой страницы, а просто инкапсуляция элементов управления + логика с другой страницы. –

+0

Когда вы говорите, что создаете пользовательский элемент управления, на который вы ссылаетесь? Фильтрация запросов выполняется только на исходной странице. – rpf3

+0

Я говорю, есть одна страница, которая выполняет фильтрацию ваших запросов и включает логику другой страницы в качестве пользовательского элемента управления. –

0

Вы можете оставить фильтр в файле cookie на стороне пользователя. Предоставлено не идеальное решение, но это один из способов.

Смежные вопросы