RetrieveHelper, Paging Example

정의

  • 네임스페이스: GST.PlusWin6.Core.Library

  • 어셈블리: GST.PlusWin6.Core.dll

설명

  • BaseForm.ClickRetrieveButton 메서드에 자주 사용되는 Find Row Pattern 코드와 6버전에 새롭게 추가된 PagingManager 컨트롤을 통한 GridView의 페이징 기능의 Find Row Pattern을 지원

  • 데이터를 조회하고 새로 바인딩된 DataSource에 대한 행 번호가 같아 FocusedRowChanged, FocusedNodeChanged 이벤트가 발생하지 않는 케이스에 작성하는 코드 패턴을 지원

  • 조회용 저장 프로시저에 찾을 값에 대한 페이지 번호를 구하는 "sys_find_page_by_value" 프로시저를 사용해야함

Method

AddFindRowInfo

  • Find Row 기능을 적용할 개체 정보를 등록

  • (※ TreeList 타입은 페이징을 지원하지 않음)

  • Parameters

    • ColumnView view : RetrieveHelper 기능을 사용할 ColumnView 타입 개체

    • TreeList tree : RetrieveHelper 기능을 사용할 TreeList 타입 개체

    • string fieldName : Find Row에서 값을 찾을 필드명

    • PagingManager pagingManager : ColumnView가 페이징 방식으로 구현된 경우 해당 개체의 PagingManager 개체를 전달 그렇지 않으면 null 값 전달

Begin

  • 데이터 조회 전 Grid 또는 Tree의 상태 정보를 보관

End

  • 데이터 조회 이전의 상태와 새로 바인딩 된 이후의 상태를 비교하여 FocusedRowChanged 또는 FocusedNodeChanged 메서드를 호출

GetValueToFindRow

  • Grid 또는 Tree 개체에서 인덱스를 값을 반환

  • FindRow 메서드가 호출된 이후엔 값이 자동으로 초기화됨

  • Returns

    • string: SetValueToFindRow 메서드에 의해 할당된 값

SetValueToFindRow

  • Grid 또는 Tree 개체에서 인덱스를 값을 할당

FindRow

  • Grid 또는 Tree 개체에서 SetValueToFindRow 메서드에 의해 할당된 값의 인덱스를 찾아 해당 행으로 포커스를 이동

IsFindingRowHandle

  • 데이터를 새로 조회할 때 Find Row Pattern에 의해 FocusedRowChanged 또는 FocusedNodeChanged 메서드가 두 번 호출되는 것을 제어하기 위한 메서드

  • 상태는 Begin 메서드에 의해 true 로 설정되며 FindRow 메서드에서 false로 변경됨

예제 (페이징이 적용된 GridControl)

circle-info

예제 코드들은 BaseForm (namespace GST.PlusWin6.Core.Forms)을 상속받은 코드를 기준으로 작성됨

C# Code

  • 변수 타입 정보: gvwList (→ GridViewEx), pmList (→ PagingManager)

  • 생성자에서 RetrieveHelper 멤버의 AddFindRowInfo 메서드로 'gvwList'에 'pmList'를 등록

  • 데이터 조회 메서드(Retrieve) 호출 전/후에 각 RetrieveHelper.Begin, RetrieveHelper.End 코드를 작성하며, 조회에 성공 시 저장했던 데이터를 찾아가기 위한 RetrieveHelper.FindRow를 작성

  • 저장에 성공 후 데이터를 찾아가는 과정에서 조회된 첫 번째 행(Row)에 대한 FocusedRowChanged 이벤트 로직을 생략하기 위해 RetrieveHelper.IsFindingRowHandle 코드를 작성

  • 데이터 저장이 완료되면, 조회할 때 데이터를 찾아가기 위한 키 값의 데이터를 저장 프로시저 처리 결과(ResultSet.ReturnString)를 참조하여 RetrieveHelper.SetValueToFindRow 메서드에 변수로 전달

조회용 저장 프로시저

  • 특정 값이 존재하는 페이지 번호와 그 페이지의 쿼리 결과를 반환 받는 방법

  • ex) [품목관리]에서 새로 저장한 품목코드가 존재하는 페이지를 바로 찾아가기 위한 쿼리 작성 규칙

  • 페이지 번호를 알기 위한 값을 받아오기 위해 '@p_find_row_value' 파라미터 정의. 해당 파라미터의 값 유/무로 페이지 번호(@p_page_number)를 재계산할지 결정

  • 페이지 번호를 재계산 하기 위해서 'sys_find_page_by_value' 저장 프로시저를 사용하며 해당 저장 프로시저의 변수에는 최종 결과가 반환되는 쿼리에 작성된 FROM 절의 테이블(@p_table_name), WHERE(@p_where), ORDER BY(@p_order_by) 구문을 함께 전달해야하며, 찾을 필드명(@p_field_name)과 값(@p_value)을 전달해서 결과를 OUTPUT 파라미터(@p_result_page)를 통해 받아옴

  • 조건(WHERE)절에 JOIN 문에서 작성된 요소를 참조할 경우 테이블(@p_table_name) 변수에 JOIN문을 함께 작성해서 전달

  • sys_find_page_by_value 저장 프로시저에 전달하는 값을 작성할 때 작은 따옴표(') 및 별칭(ALIAS) 참조에 주의

Last updated