문제

체 텍스트 http://img3.imageshack.us/img3/1488/advancedsearch.png

나는 건물에"고급 검색"인터페이스 ASP.NET 응용 프로그램.난 필요 없어요 그래서 이것을 쓰는 것은 나를 위해,그러나 나에 붙어 특정 문제에 관한 동적 컨트롤 ViewState.나는 어떤 방향으로 접근하는 방법에 대한 이다.여기에 내 상황:

재료:

  • 수리 할 수 있는 설정의 API 개체를 나타내는 엔티티,필드를 검색하는 손잡이 구색,생성 SQL,그리고 반환하는 결과입니다.그래서 그는 모든습니다.
  • ASP.NET 3.5

원하는 인터페이스 기능:

(1)이 초기 페이지 하중,인터페이스 사전 검색체 집합으로 의식체입니다.그것은 바인딩으로 그들을 설정의 컨트롤(위의 이미지를 참조하십시오.)

  • 일부 검색 항목은 간단,다음과 같:

    Field(추가 다운 목록)|운영자(추가 다운 목록)|값(TextBox)

  • 검색 기준에 대한 컨트롤 일부 필드 형식이 중요한 저장된 정보에 viewstate,다음과 같:

    Field(추가 다운 목록)|운영자(추가 다운 목록)|값(추가 다운 목록)는"Value"추가 다운 목록에 의해 채워진 데이터베이스 쿼리가 있습니다.

  • 어떤 필드를 조회하는 다른 기관에 일으키는 원인이 되는 체인의 필드를 선택,다음과 같:

    Field(추가 다운 목록)분야(추가 다운 목록)|운영자(추가 다운 목록)|값

(2)사용자 수정으로 검색:

  • 추가 및 제거 검색 기준을 클릭하면 해당 버튼
  • 구성하는 기존 표준에 의해 변경,현장 운영자,또는 값입니다.변화하는 분야 또는 연산자는 필요한 통제를 다시 구성 변경하여 사용할 수 있는 연산자는,변경"Value"를 입력 제어를 다른 형식 또는 추가/제거 DropDownLists 에서"분야"섹션으면 조회-입력 필드를 선택한/지는 않습니다.

(3)마지막으로,사용자가"검색"그들의 결과입니다.

문제:

당신은 아마 이미 알고있는 바와 같이 당신이 질문에 대답 컨트롤 추가에 동적으로 페이지에서 사라시오내가 생성한 정렬을 자극하는 제어 수집하고 깔끔하게 수행 단계(1)위에서 볼 수 있듯이 첨부된 이미지입니다.(나는 염려하지 않습 스타일에 대한 이 시점에서 분명합니다.)

그러나 포스트백,컨트롤은 모두 사라졌고,내 검색 API 체가 사라졌다.을 얻을 수 있다면 동적으로 생성되어 수집하는 그냥 좋은 플레이와 스틱에 ViewState,나 수 있는 검사에서 컨트롤 다시 게시 다시는 검색어를 처리하 제어 이벤트를 깔끔하게 보관할 수 있습니다.

가능한 솔루션

  • 내가 만들 수 있는 이색체 serializable 에 저장 viewstate.다음 페이지에 적용할 수 있 그것을 잡고 재구성하 제어 컬렉션에서 페이지 로딩 시간입니다.그러나 나는 확실하지 않으면 이것은 플레이와 함께 멋지게 컨트롤이 제기 이벤트,그리고 무슨 일을 viewstate 의 드롭다운 목록에 포함하는 데이터베이스의 데이터가 그것을 다시 얻을 수 있습니까?그것은 매우 바람직하지 않은 나를 위해 다시 쿼리 데이터베이스에서 매시오

  • 을 개발할 수 있다는 사용자 지정 제어 서버(이 링크를 참조하십시오 의)이런 종류의...하지만 그는 새로운 주제한 것을 포함 일부 학습,더 나는 완전히 확실하지 않는 경우 사용자 지정 제어 서버 작동상과 함께 멋지게 비 고정 제어 컬렉션이 있습니다.사람에 대해 알고 있는가?

  • 었다고 생각하고 할 수 있습니다 이를 위해 사용된 컨트롤-예를 들어 내가 할 수 바인딩 나의 표준 컬렉션을 중계하는 고정되어 있어 컬렉션을(아마도 숨기기 비용"value"컨트롤을 사용하는 내용 중계기의"분야"드롭다운 목록).다음의 모든 정보는 숙박 ViewState...오른쪽?

  • 새로운 아이디어를 주시면 감사하겠습니다.

당신의 도움을 위한 감사합니다.b.벤트

도움이 되었습니까?

해결책

었어 코딩에 대해 일하고 이 작업을 사용하여 아름답게 세 번째 옵션을 제안에 나 질문이 세계된 제어합니다.실제로 나는 아이디어를 생각했을 때 나는 강제하기 위한 질문에 세부사항-지 않는 그냥 당신에게 일어날까?

내 SearchCriterionControl 으로 asp:리피터 바인딩을 개체의 모음입니다.필드에 대한 선택이 나는 asp:추가 다운 목록의 내부에는 중첩된 asp:리피터 바인딩된 필드 배열입니다.모든 것을 아름답게 작동,유지태,실제로 매우 작은 코드입니다.그래서 나는 결코 동적으로 컨트롤을 추가 페이지는,하느님 감사합니다.

감사에 대한 제안,청산,매트와 andrewWinn.

다른 팁

지 않기 때문에 다른 사람이 자상을 촬영에서 2 시간,나는 나의 모자에 반지와 함께 하는 솔루션에 의존하지 않 viewstate 에서는 모두(나 ASP.NET 모델의 포스트백).

당신은 무엇을 잡고 모든 입력 값으로 jQuery 고 대신 후 다시했는 게시물에 대해 페이지(또는 새로운 결과를 얻을 수 있습니다.페이지)?또는,당신은 전체 일 asyncrhonous 및 하 Ajax 요청에 대하여 웹 방법을 공급하는 결과를 채우 클라이언트 측에서 필요?

불행한 것은 여기에 당신이 재구성하는 어떤 유형의 제어하는 데 사용되었고 그림을 구성 검색 때문에 데이터를 늘 함께 전달 viewstate.그러나 나는 당신이 이미 있었다려해야 할 몇 가지 종류의 번역의 입력 데이터 쿼리로 어쨌든 형태.

읽기 에 대한 자세한 정보를 사용하여 jQuery 중 ASP.NET 페이지 방법입니다.기 페이지 방법은 정지 상태로 표시되어야 합니다(그것은 쉬운 감시).

나는 확실하지 않은 무슨 일을 하는 서버측 구성하는 쿼리-그러나 나는 것입 고도 추천 LINQ.았다"비슷한 고급 검색 기능"이전에,후에 몇 가지 다른 시도는 LINQ 었다위한 훌륭한 도구가 이 문제는지 여부에 관계없이었을 타격 SQL LINQtoSQL 하거나 타격 메모리 컬렉션의 객체입니다.

이 일을 너무 잘하기 때문에 1)LINQ 지연 실행을 그리고 2)LINQ 쿼리가 반환하는 다른 가능한 객체입니다.여기 암시할 수 있는 체인의 LINQ 쿼리는 당신이 함께 만들에서의 입력하는 대신 하나의 거대한 절로 번역하여 SQL 또는 무 backstore 사용(중 하나 내려고 시도했 생성 SQL 절과 문자열을,하지만 여전히 전달하는 데이터 입력을 통해 SQLParameters 에 대한 SQL injection 보호-그것은 지저분하고 복잡한 경우 손수 제작된 LINQ 었 크기 순서를 쉽게 이해하고 구현하).

예를 들어:

List<string> data; // or perhaps your a DB Context for LINQtoSQL?

var query = data.Where(item => item.contains("foo"));

if( {user supplies length search option} )
    query = query.Where(item => item.Length < 5);

// etc, etc.

// LINQ doesn't do anything until the query is iterated, at which point
// it will construct the SQL statement without you worrying about details or parameter binding
foreach(string value in query)
    ; // do something with the results

기 때문에 이연의 실행 및 반환 가능한 입력을 연결할 수 있습 LINQ 쿼리를 이 표현은 하루 종일 그것에 대해 걱정합 구현 정보(예:로 변환하여 SQL 쿼리)에서 실행한다.

I 을 제공할 수 없습니다 당신과 함께 하는 정확한 단계를 수행해야 합니다,하지만 나는 매우 좋으로 보고 asp.net 페이지 수명 주기가 있습니다.만든 사용자 정의 컨트롤 DLL 로 한다.을 캡처 다시 게시 데이터 특정한 단계에서 수명 주기시고 다시 바인딩에서 데이터를 다른 단계가 있습니다.또한 thinkgs 다음과 같 viewstate 에서만 이용할 수 있는 특정 포인트도.내가 알고있었다는 것을 재정의 On_init,On_prerender 고 일부는 다른 방법이 있습니다.

죄송할 수 없었다 더 많은 도움이지만,그가 코드가 없는 저와(그것의 오래 된다.)도움이 되기를 바랍니다.

를 추가하는 경우 제어 컨트롤 트리 동적으로,당신을 추가해야에 postpack 니다.다만 메소드를 호출을 구성하는 컨트롤 Page_Load 또는 Page_Init 고 컨트롤 유지해야하는 페이지에서 다시 게시.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top