Translate

[jqGrid] 고급 검색 설명







실습 jqGrid 버전: CDN 제공하는 v4.6 버전으로 테스트



고급 검색

 - 고급검색은 여러 조건을 동시에 사용하여 여러 필드를 검색하는 방법이며, 고급검색과 단일검색은 같은 메소드를 사용하지만 설정과 서버에 보내는 데이터가 다르다.
 - 이 방법을 사용하려면 Common, Form Edit, Filter Plugin 등이 로딩되어야 한다.





호출 방법
1004lucifer
<script>
..
jQuery("#grid_id").searchGrid({multipleSearch:true,...} ); // old API
jQuery("#grid_id").jqGrid('searchGrid', {multipleSearch:true,...} ); // new API
..
</script>
grid_id: 이미 생성된 그리드의 id
multipleSearch: 고급검색을 활성화한다.
multipleGroup: 복잡한 그룹조건을 추가할 수 있는 고급 대화상자 활성화
... : name:value 형식의 다른 옵션


 - 일반적으로 메소드를 호출하면 모달대화상자가 시작되고 대화상자가 닫힐때까지 그리드에 엑세스 할 수 없다.
 - 이 메소드는 navigator의 기본 검색메소드가 아니며, 이를 활성화 하려면 확장 메소드를 사용하여 기본 검색옵션을 설정하거나 검색옵션 대신 navigator에 설정해야 한다.


만들어진 고급검색의 모습은 아래와 같다.
(사용자는 검색을 수행할 조건을 무제한으로 추가하거나 삭제할 수 있다.)





옵션

 - 단일검색(링크)와 동일한 옵션이며 아래 고급검색을 위한 추가 옵션만 설명한다.

 - multipleSearch: 고급검색을 활성화
 - sFilter: 서버에 요청할 데이터의 이름을 결정함. 기본값은 filters


검색데이터를 서버의 url로 보낼 때 _search=true 파라메터가 추가되며 이는 필터의 요소이다.


filters = 
   {
    "groupOp":"OR",
    "rules":[{"field":"a.id","op":"eq","data":"1"}],
    "groups":[
         {
             "groupOp":"AND",
             "rules":[{"field":"a.id","op":"eq","data":"2"}],
             "groups":[...]
         }
     ]
}
서버에 보내지는 데이터는 위와 같으며 파라메터가 있는 JSON 데이터이다.
1004lucifer
 - groupOp: 검색 규칙을 결정하며 AND 또는 OR이다. (Reset버튼 근처의 SelectBox로 사용자가 변경할 수 있다.)

 - rules: 아래의 옵션을 가지는 배열
  1) field: colModel로부터의 선택된 index(또는 name)의 이름이 포함된다.
  2) op: 검색조건을 결정한다. (링크의 sopt 옵션을 참고)
  3) data: 검색할 입력된 데이터

 - groups: 다른 groupOp의 설정, 복잡한 검색쿼리를 정의하는 규칙요소






참고
 - http://www.trirand.com/jqgridwiki/doku.php?id=wiki:advanced_searching

댓글