2010-07-29 3 views
2

그래서 .Net 웹 사이트를 만들었으며 그 중 일부는 데이터베이스 테이블을 필터링하고 쿼리하고 표시 할 수있는 페이지입니다. 그런 다음 사용자가 편집하거나 삭제할 개별 행을 선택할 수 있도록 허용합니다. 이 두 기능은 각각 별도의 페이지에서 수행됩니다. 최근에 방문 사이에 쿼리 필터링을 유지할 수 있도록 기능을 첫 페이지에 추가하라는 요청을 받았습니다. 예를 들어 사용자가 행을 편집 한 다음 표로 돌아 가면 선택한 필터가 그대로 유지됩니다..Net 페이지 내에서 페이지 표시

제 질문은 가장 쉬운 방법입니다. 문제는 많은 필터가 DB의 다른 테이블을 기반으로 동적으로 생성되므로 페이지에 정적으로 코딩되지 않기 때문입니다. 한 옵션은 쿼리 문자열에 필터 문자열을 전달하는 것이지만 가능한 큰 길이 때문에 비현실적으로 보입니다. 또한 새 창을 열려고 생각했지만 보안 및 데이터 중복에 대한 우려가있었습니다. 또한 iframe을 사용하여 페이지를로드하고 편집이 끝날 때까지 원본 콘텐츠를 숨길 수 있지만 주변 페이지의 iframe 내에서 클릭에 액세스하는 방법이나 이것이 좋은 생각인지 확실하지 않습니다.

어떤 도움이나 제안이라도 대단히 감사하겠습니다.

감사합니다.

+0

세션을 사용하여 가장 최근의 필터를 저장할 수 있습니다. – Fosco

답변

0

당신은 필터를 나타내는 각 테이블을 식별 키와 값을 포함하는 유사한 Dictionary<string, object> 또는 무언가를 저장하는 세션 변수를 사용할 수 있습니다. 실제 필터링 옵션은 주어진 세션에 저장할 정보가 너무 많아서는 안됩니다.

응용 프로그램이 필터의 개념을 캡처하는 방법을 알지 못하면 정규화 된 솔루션을 제공하는 것이 약간 어렵지만 세션은 적절한 옵션처럼 보입니다.

+0

페이지에서 필터는 드롭 다운 목록이지만 기본적으로 WHERE 절에 표시 될 SQL을 작성하는 방법입니다. 각 필터의 ​​id는 SQL 열의 ID이며 ListItems의 값은 가능한 열 값입니다. 그것들은 모두 문자열 또는 int입니다. 내가 말하는 것을 수행하고 각 테이블의 세션에 Dictionary 개체를 저장하면 비용이 많이 듭니까? 각 사용자가 자신의 그룹에만 관심을 갖기 때문에 관리자가 아닌 한 특정 사용자가 하나 이상의 두 개 이상의 고유 한 테이블 페이지를 방문하는 것을 실제로 볼 수 없습니다. – rpf3

+0

이것은 나에게 실용적인 것처럼 보입니다. 이러한 종류의 데이터를 세션에 저장하는 데 드는 메모리 비용은 전혀 높지 않아야합니다. 필터 값을 serialize하는 방법에 따라 달라집니다. 아마도 다른 필터링 옵션을 캡슐화 한 "TableFilter"클래스를 정의한 경우 Dictionary 를 직렬화 할 수 있습니다. –

3

두 페이지 모두 사용할 수있는 User Control에 기능을 캡슐화 할 수 있습니다.

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

+0

+1. 이 질문은 다른 페이지의 경우처럼 들리지는 않지만 컨트롤의 캡슐화 + 다른 페이지의 로직과 같습니다. –

+0

사용자 정의 컨트롤을 만들 때 어떤 기능을 참조한다고 말합니까? 쿼리 필터링은 원본 페이지에서만 수행됩니다. – rpf3

+0

나는 쿼리를 필터링하고 다른 페이지 로직을 사용자 정의 컨트롤로 포함하는 한 페이지를 가지고 있다고 말합니다. –

0

사용자 쪽 쿠키를 필터에 보관할 수 있습니다. 완벽한 해결책은 아니지만 한 가지 방법입니다.