Translate

2019년 4월 30일 화요일

[jqGrid] 단일 필드 검색 설명







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



단일 필드 검색

 - 단일필드 검색은 한번에 한필드에서 (서버로)데이터를 검색하는 방법이며, 이 방법을 사용할 때 사용자가 필드와 조건을 선택하여 검색을 적용할 수 있는 모달 형식을 구성한다.

 - 이 방법은 url을 사용하여 검색데이터를 보내고 사용자정의 및 툴바 검색방법과 다르며, 차이점은 검색된 데이터가 name:value 쌍이 아니다.

 - 이 방법을 사용하려면 Common, Form Edit, Filter Plugin 등의 모듈이 로드되어야 한다.






호출 방법

old API
<script>
... 
jQuery("#grid_id").searchGrid( options );
...
</script>
1004lucifer
new API
<script>
... 
jQuery("#grid_id").jqGrid('searchGrid', options );
...
</script>


 - 일반적으로 메소드를 실행하면 모달 대화상자가 시작되며, 모달 대화상자를 닫기전까지 그리드에 엑세스 할 수 없다.
 - 이 메소드는 검색이 사용가능한경우 navigator(링크) 의 기본 검색메소드이며, navigator의 검색 파라메터는 아래의 방법과 동일하게 설정할 수 있다.

<script>
...
jQuery("#grid_id").jqGrid({
...
   pager : '#gridpager',
...
}).navGrid('#gridpager',{view:true, del:false}, 
{}, //  default settings for edit
{}, //  default settings for add
{},  // delete instead that del:false we need this
{search_options}, // search options
{} /* view parameters*/
);
...
</script>
 - 기본적으로 대화상자는 그리드의 왼쪽 상단에 나타난다.
 - 검색 대화상자의 새옵션 overlay(기본값10)이 추가되며, 이 값을 0으로 하면 overlay가 비활성화 되며 그리드와 상호작용이 가능하다.





옵션

 - 이 메소드는 언어파일의 아래 옵션을 사용하며, search 메소드의 옵션배열을 전달할 수 있다.
$.jgrid = {
...
   search : {
     caption: "Search...",
     Find: "Find",
     Reset: "Reset",
     odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain']
   },
...

1004lucifer
OptionTypeDescriptionDefault
afterShowSearchfunction정의된경우 이 이벤트는 검색 대화상자가 표시된 후 매번 발생한다.null
beforeShowSearchfunction정의된경우 이 이벤트는 검색대화상자가 표시되기전에 매번 발생한다.null
closeAfterSearchbooleantrue 설정 시 사용자가 검색대화상자를 닫은 후 검색이 적용된다.(Find Button 클릭)false
closeAfterResetbooleantrue 설정 시 사용자가 검색대화상자를 닫은 후 검색이 초기화 된다. (Reset button 클릭)false
dragboolean모달을 드래그 가능여부 지정true
jqModalbooleantrue 설정 시 jqModel plugin(있는경우) 을 사용하여 대화상자를 생성하며, true로 설정되고 plugin이 없는경우 내부함수를 사용하여 대화상자를 생성한다.true
resizeboolean모달의 크리조정 활성화/비활성화 여부true
modalbooleantrue 설정 시 검색대화상자가 모달이 된다.false
widthinteger검색대화상자의 width값을 정의450
heightmixed검색대화상자의 height값을 정의auto
topinteger모달 대화상자의 최초 상단 위치.
기본값은 0이며 그리드의 왼쪽 가장위에 위치한다.
jqModql이 true이고 jqModal 플러그인이 있는경우 값이 0이면 윈도우의 왼쪽 가장위를 의미한다.
0
leftinteger모달 대화상자의 최초 왼쪽 위치.
기본값은 0이며 그리드의 왼쪽 가장위에 위치한다.
jqModql이 true이고 jqModal 플러그인이 있는경우 값이 0이면 윈도우의 왼쪽 가장위를 의미한다.
0
captionstring모달의 captionsee lang file
showQuerybooleantrue로 설정 시 사용자가 검색의 조건을 정의할 때 생성되는 query를 보여주며, 고급검색에서 사용가능하다.
검색버튼 근처의 이버튼을 다시 사용할 시 쿼리가 보여지거나 감춰지거나 동적으로 변한다.
false
searchOnEnterbooleanEnter 키를 눌러서 검색할지의 여부를 결정한다.false
Findstringfind 버튼의 textsee lang file
multipleSearchbooleantrue로 설정 시 고급검색이 활성화 된다.false
multipleGroupbooleantrue로 설정 시 복잡한 조건을 정의할 수 있는 고급검색이 활성화 된다.false
odataarraysopt 옵션과 부합하는 교체디는 문자열see lang file
onClosefunction정의된경우 대화상자가 닫힐 때 이벤트가 발생한다.
true 또는 false를 반환할 수 있으며, false를 반환하면 대화상자가 닫히지 않는다.
null
afterRedrawfunction정의된경우 filter가 모습이 바뀔때(redraw) 마다 수행된다.
룰이나 필드를 추가/삭제할때마다 filter는 redraw되며, 검색 파라메터가 파라메터로 전달된다.
null
onSearchfunction정의된경우 검색버튼을 클릭하면 이 이벤트가 실행된다.null
onResetfunction정의된경우 reset버튼이 활성화되면 수행된다.null
closeOnEscapeboolean true설정 시 ESC키를 누르면 검색대화상자가 닫힌다.false
onInitializeSearchfunction이 이벤트는 모달을 만들때 한번만 수행된다.null
recreateFormboolean true로 설정 시 colModel의 새 옵션으로 검색대화상자가 활성화될 때마다 form 이 다시 생성된다.false
showOnLoadboolean이 옵션은 navigator옵션에서만 사용가능하며, true 설정 시 그리드가 초기에 구성될 때 대화상자가 자동으로 나타난다.false
errorcheckboolean searchrules가 정의된경우 error체크를 한다.
입력에 오류가 있으면 필터는 서버에 전송하지 ㅇ낳고 오류메시지를 보여준다.
true
Resetstringclear (reset) Button 의 텍스트see lang file
sFieldstringsopt 설명 참조searchField
sFilterstring고급검색이 가능하며 고급검색 항목 참조filters
sOperstringsopt 설명 참조searchOper
soptarray이 옵션은 일반적인 검색규칙을 설정하며, 설정하지 않으면 모든 사용가능한 옵션이 사용된다.
옵션은 다음과 같다.
['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc','nu','nn']
해당 텍스트는 언어파일에 있으며 다음을 의미한다.
['equal','not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain','is null','is not null']
sopt배열의 요소는 순서에 상관이 없다.
sValuestringsopt 설명 참조searchString
overlayinteger이 옵션을 0으로 설정 시 그리드의 오버레이가 비활성화 되며 검색 대화상자가 활성화시에도 그리드와 상호작용이 가능하다.10
layerstring정의된경우 DOM의 유효한 id 이어야하며, 이 옵션이 설정되면 요소의 자식으로 filter가 삽입된다.null
tmplNamesarray['Template1', 'Template2',…] 와 같이 간단한 사용자 입력에 사용되는 템플릿 이름을 정의한다.
템플릿 정의 관련 그리드 데모 참고
null
tmplFiltersarray of objects 정의된 경우 tmplNames와 값이 일치해야 한다.
템플릿 정의 관련 그리드 데모 참고
null
tmplLabelstring템플릿이 정의된경우 Reset과 Find 버튼 사이에 Select Element가 보여진다.
해당 select에 보여질 텍스트
Template:
zIndexinteger대화상자의 z-index 값.
다른 요소 아래에 대화상자가 보여지길 원하는경우 기본값인 950보다는 높아야 하며, 대부분의 경우 jQuery UI 대화상자의 기본값인 1000 보다 높아야 한다.
950




 위에서 언급한것처럼 서버로 검색 데이터 전달은 사용자정의, 툴바 검색과 다르다.
찾기 버튼을 클릭하면 그리드는 (_search=true와 함께) name=value 쌍의 3개 파라메터가 추가된다.

 - sField (searchField):  colModel의 index 값
 - sValue (searchString): 입력된 값
 - sOper (searchOper): 검색유형 (sopt array참고)

 예를들어 필드색인이 invid이고 조건이 같고 검색값이 123이면 서버에 전송되는 문자열은 다음과 같다.
http://localhost/demo35/server.php?...&searchField=invid&searchString=123&searchOper=eq






colModel 옵션

 - jqGrid v3.5 부터 모든 검색 메소드에 사용할 수 있는 공통 검색옵션을 사용하며, 아래는 colModel에서 설정해야 하는 옵션인다.
(일부 옵션은 특정 메소드에 적용할 수 없다.)
1004lucifer
OptionTypeDescriptionDefault
searchboolean필드를 검색할지 여부true
stypestring필드의 검색유형을 결정
text: text타입의 input element 생성
select: select element 생성
text
searchoptionsobject검색필드에 대한 이벤트나 그외 속성이 정의된 내용이 담긴 Object (아래참조)
searchrulesobject사용자 입력 유효성검사에 대한 추가조건이 포함된 Object

searchoptions 옵션은 사용자정의 검색 메소드에서는 적용되지 않으며, 이경우에는 별도의 옵션을 사용한다.



searchoptions 객체의 속성은 아래와 같다.


PropertyTypeDescription
dataUrlstring이 옵션은 stype:'select' 로써 select Element 인 경우에만 사용이 가능하며, select Element 를 로드할 url을 나타낸다.
이 옵션을 설정하면 Element는 ajax request로 받아온 값으로 채워지며 데이터는 원하는 옵션이 있어야 하며 한번만 호출이 된다.
응답내용의 예는 아래와 같다.
<select><option value=“1”>One</option> <option value=“2”>Two</option></select>.
buildSelectfunction이 옵션은 dataUrl 파라메터가 설정된 경우에만 사용할 수 있으며, 서버의 응답으로 select Element 를 만들 수 없는경우 이 함수를 이용해 select를 생성한다.
이 함수는 dataUrl 옵션과 같이 select, options 값이 포함된 문자열을 반환해야 하며, 서버의 응답값이 함수 파라메터로 넘겨진다.
dataInitfunction이 함수가 설정된경우 Element가 생성될 때 한번 호출이 된다.
이 함수에는 element object 가 전달된다.
dataInit: function(elem) {
  do something
}
이 함수에서 datepicker를 붙이려면 아래와 같이 할 수 있다.
dataInit : function (elem) {
  $(elem).datepicker();
}
dataEventsarraydata Element에 이벤트 리스트를 적용한다.
$(“#id”).bind(type, [data], fn) 과 같이 data Element에 이벤트를 바인딩하며 아래와 같이 기술한다.
dataEvents: [
 { type: 'click', data: { i: 7 }, fn: function(e) { console.log(e.data.i); }},
 { type: 'keypress', fn: function(e) { console.log('keypress'); } }
]
attrobject생성된 Element에 설정가능한 속성 Object
title을 설정하려면 아래와 같다.
attr : { title: “Some title” }
searchhiddenboolean기본적으로 그리드에서 숨겨진 Element는 검색할 수 없다.
필드가 숨겨진경우 검색을 가능하게 하려면 true로 설정해라.
soptarray이 옵션은 사용자정의검색을 제외한 모든 검색에서 사용가능하며, element에 적용되는 작업을 결정한다.
설정하지 않은경우 사용가능한 모든옵션이 사용되며, 툴바검색에서는 첫번째 요소가 사용된다.
모든 옵션은 다음과 같다.
['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
해당 텍스트는 언어파일에 있으며 의미는 다음과 같다.
['equal','not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain']
배열 요소의 순서는 상관없다.
defaultValuestring검색 입력요소의 기본값으로 사용할 문자열
valuemixed이 옵션은 stype:'select' 인 경우에만 사용가능하며 검색대화상자의 select option 을 정의한다.
stype:'select'가 설정되고 dataUrl 옵션이 설정되지 않은경우 값은 string 또는 object 이다.
값이 string인경우 value:label 쌍으로 설정되어야 하며 label의 값은 콜론(:)으로 분리되며 세미콜론(;)으로 끝나야 한다.
editoptions:{value:“1:One;2:Two”} <= 이렇게 세미콜론(;) 없이 끝나면 안된다.
값이 object인경우 value:name 쌍으로 정의되어야 한다.
ex) editoptions:{value:{1:'One',2:'Two'}}
clearSearchboolean기본값: true
false로 설정 시 검색데이터를 지우는 X아이콘을 비활성화 한다.



 참고
 - searchoptions의 dataUrl옵션이 select 타입 검색에서 사용되지 않으면, select에 대한 정의는 searchoptions의 속성값에서 처음으로 가져오며, 정의되지 않은경우 editoptions의 속성값을 사용한다.
 ex) editoptions:{value:“1:one;2:two”,…}






colModel 규칙

<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', index:'price', width:60, search:true, stype:'text', searchoptions:{dataInit:datePick, attr:{title:'Select Date'}} },
      ...
   ]
...
});
datePick = function(elem)
{
   jQuery(elem).datepicker();
}
</script>


검색규칙
 - 이옵션은 검색가능한 요소에 추가속성을 추가하고 colModel에서 사용해야하며 대부분 사용자 입력값을 서버에 전송하기전에 검사하는데 사용된다.

<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', ..., searchrules:{required:true....}, search:true },
      ...
   ]
...
});
</script>


사용가능한 옵션목록
1004lucifer
OptionTypeDescription
requiredbooleantrue 설정 시 값이 비어있는경우 에러메시지 표시
numberbooleantrue 설정 시 값이 숫자가 아닌경우 에러메시지 표시
integerbooleantrue 설정 시 값이 integer가 아닌경우 에러메시지 표시
minValuenumber(integer)설정한경우 값이 설정값보다 작은경우 에러메시지 표시
maxValuenumber(integer)설정한경우 값이 설정값보다 크면 에러메시지 표시
emailbooleantrue 설정 시 값이 이메일 형식이 아니면 에러메시지 표시
urlbooleantrue 설정 시 값이 url 형식이 아니면 에러메시지 표시
datebooleantrue 설정 시 값은 datefmt옵션에서 가져온 값(설정되지 않으면 ISO date 사용)이며 date형식이 아니면 에러메시지 표시
timebooleantrue 설정 시 time 형식이 아니면 에러메시지 표시.
현재는 hh:mm 포멧과 옵션으로 마지막에 am/pm이 있다.
custombooleantrue 설정 시 custom_func 함수의 규칙에 따라체크한다. (아래 참고)
custom_funcfunction이 함수는 custom 옵션이 true인 경우에만 사용이 가능하며, 전달되는 파라메터는 체크할 값과 colModel의 이름이다.
이 함수는 아래와 같이 배열을 반환해야 한다.
1번째: 성공실패여부 true 또는 false
2번째: 1번째값이 false인경우 에러메시지
ex) [false,“Please enter valid value”]



 검색규칙은 검색대화상자에서만 사용가능하며 검색필터에서는 작동되지 않는다.
 참고링크 - http://stackoverflow.com/a/9011733




사용자정의 검사 예제
<script>
function mypricecheck(value, colname) {
if (value < 0 || value >20) 
   return [false,"Please enter value between 0 and 20"];
else 
   return [true,""];
}
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', ..., searchrules:{custom:true, custom_func:mypricecheck....}, search:true },
      ...
   ]
...
});
</script>


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

2019년 4월 29일 월요일

[jqGrid] 사용자정의 검색 설명







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



사용자정의 검색

 - 이 메소드는 그리드에 대한 사용자정의 search form을 구성하기 위해 호출할 수 있으며, 그리드의 url옵션을 사용하여 서버에 검색을 한다.
 - 검색이 활성화 되면 name:value 형식으로 postData에 배열데이터로 담아 서버에 요청을 보낸다.
 - 검색에 입력된 데이터만 서버에 요청을 보내며 search form 에서 데이터를 지우면 값이 postData 배열에서 삭제된다.
 - 서버에 요청을 보낼 때 colModel에 index로 셋팅된 값이 있는경우 index를 보내며 없는경우 name을 보내며, 파라메터에 _search=true 를 추가로 셋팅한다.



* 더 이상 공식적으로 지원되지 않으며 grid.addons.js 파일을 수동으로 포함시켜야 동작이 가능하다 - 링크

호출 방법 및 옵션

 - 그리드가 위치한 곳의 위/아래에 search form 을 정의한다.
1004lucifer
<div id="mysearch"></div>
그리고 아래와 같이 작업한다.
jQuery("#mysearch").filterGrid('#grid_id',options); // Old API

jQuery("#mysearch").jqGrid('filterGrid','#grid_id',options); // New API
 - grid_id: 검색이 적용될 그리드의 ID
 - options: 파라미터의 배열 (아래 표 참고)


옵션은 다음과 같다.


OptionDescriptionDefault
gridModeltrue로 설정 시 colModel의 name, index, edittype, editoptions를 이용하여 검색을 구성할 수 있다.
이 메소드의 필요조건을 충족하기위해 colModel에 파라메터를 추가할 수 있으며 파라메터는 다음과 같다.

defval: 검색필드의 기본값으로 초기검색 시 설정된다.
surl: edittype:'select' 인 경우에만 사용가능하며, url에서 이미 구성된 select요소 내용을 얻을 수 있다.
- 다음과 같은 HTML 콘텐츠에서 기대할 수 있다.
<select>
<option value='val1'> Value1 </option>
<option value='val2'> Value2 </option>

<option value='valn'> ValueN </option>
</select>
필드와 검색에만 form에 true가 첨부되며, 감춰진 Element에는 포함되지 않는다.
false인경우 검색을 위해 filterModel를 구성해야 한다.(아래참조)
false
gridNames이 옵션은 gridModel이 true인 경우에만 작동함.
true로 설정 시 검색필드의 colNames label을 이름으로 사용한다.
false
gridToolbar권장하지 않음.
대신 filterToolbar 메소드를 사용해라.
false
filterModelgridModel이 false 인경우 필터모델을 사용해야 한다.
filterModel [

{label:'LableFild', name: 'colname', stype: 'select', defval: 'default_value', surl: 'someurl', sopt:{optins for the select}},


label: 필드의 label (텍스트 설명)
name: 컬럼의 이름 - colModel의 name과 같아야 하며, 해당 컬럼의 index를 검색한다.
stype: input Element 타입 - text or select
defval: 검색 input Element의 기본값
surl: stype:'select' 인 경우에만 사용가능하며, url에서 이미 구성된 select Element를 얻을 수 있다.
아래와 같은 HTML 컨텐츠에서 기대할 수 있다.
<select>
<option value='val1'> Value1 </option>
<option value='val2'> Value2 </option>

<option value='valn'> ValueN </option>
</select>
sopt: colModel의 editoptions와 같으며, element에 적용 가능한 유효옵션이다.
[]
formtypeform을 구성하는 방법을 정의한다.
ex) 'horizontal' or 'vertical'
horizontal
autosearchtrue로 설정 시 사용자가 input Element에 값을 넣고 enter를 입력하면 검색이 되며, selectbox의 값이 변경될 때도 검색이 된다.
false로 설정 시 버튼을 사용하여 검색을 할 수 있다.
true
formclassform에 적용할 수 있는 class“filterform”
tableclass(form Element의 자식요소인) table에 적용가능한 class“filtertable”
buttonclass버튼에 적용할 수 있는 class“filterbutton”
searchButton검색을 수행하는 버튼의 label(라벨)
(이 label은 jqGrid를 사용하지 않고 label을 어디서나 사용할 수 있도록 메소드를 분리하기 때문에 언어파일에서 가져오지 않는다.)
“Search”
clearButton이미 입력된 값을 지우는 버튼의 label“Clear”
enableSearch검색버튼 활성화/비활성화false
enableClearclearButton 활성화/비활성화false
beforeSearch검색전에 발생하는 이벤트null
afterSearch검색 후 발생하는 이벤트null
beforeClear입력된 값을 지우기전에 실행되는 이벤트
(clearbutton 누를때 발생)
null
afterClear입력된 값을 지운 후 발생하는 이벤트null
url검색중인 값을 위한 별도의 URL''
marksearchedtrue 설정 시 검색이 적용된 모든 컬럼에 대해서 검색가능 표시가 적용되며, 검색을 지우면 표시가 사라진다.
jqGrid v3.5 에는 적용되지 않음
true





추가 메소드
1004lucifer
filterGrid를 사용하는 경우 2개의 권한이 있는 메소드를 사용할 수 있다.

triggerSearch - 그리드의 검색을 실행
var sg = jQuery("#mysearch").filterGrid(...)[0]; 
sg.triggerSearch();

clearSearch - 검색값을 지우고 빈값이나 기본값으로 검색을 실행
sg.clearSearch();

이 메소드는 new API 에서 작동되지 않는다.




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

2019년 4월 25일 목요일

[jqGrid] 동적 Column(열) 변경 예제







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


jqGrid에서 동적으로 컬럼(Column) 변경하는 방법에 대해서 알아본다.
1004lucifer


 jqGrid v4.7.1 이하버전을 기준으로 동적으로 컬럼을 추가하거나 삭제할 수 있는 기능이 없다.
 대체 방법으로 그리드를 unload 시킨 후 다시 만드는 방법으로 비슷한 결과를 만들 수 있다.



관련 메소드

MethodParamReturnsDescription
trigger("reloadGrid")nonenone그리드를 현재 설정으로 다시 로드한다.
datatype이 xml 또는 json일경우 서버에 새로 요청을 한다.
이미 구성된 그리드에 적용을 해야 한다.
* 이 방법은 header 정보를 변경하지 않는다. 즉, colModel의 변경사항에 영향을 미치지 않는다. colModel이 다른경우 gridUnload 후 reload 방법을 사용할 수 있다.
* loadonce값이 false인경우 절대 사용하지 마라.
(추가 설명 링크)
GridDestroygrid_idtrue on success, false otherwiseDOM에서 id=grid_id 인 그리드객체를 삭제한다. (html과 관련된것과 그리드의 모든 이벤트를 unbind 시킨다)
GridUnloadgrid_idtrue on success, false otherwiseGridDestroy와 다른점은 그리드는 삭제되지만 table, pager Element는 그대로 남겨져 재사용이 가능하다.




아래 예제 확인




참고
 - https://stackoverflow.com/questions/4232038/jqgrid-add-new-column

[jqGrid] 툴바 검색 설명







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



툴바 검색

 - 이 메소드는 그리드의 헤더 아래에 input Element를 만들어 검색을 구성하며, 헤더의 크기가 조정되면 input Element도 새로운 너비에 따라 크기가 조정된다.
 - 이 메소드는 그리드의 url 옵션을 사용하여 서버에 대해서 검색을 수행하며, 검색이 활성화되면 name:value 유형의 배열이 서버에 보내지게 되고 이 배열은 postData 파라메터에 추가된다. 이 값은 입력된 필드에 대해서만 보내지며, 검색 form 을 지우면 값이 postData 배열에서 삭제가 된다.
 - 서버에 데이터를 전달 할 때 name이 아니라 colModel에 설정된 index를 전달하려고 하며, index가 발견되지 않으면 name을 사용하고 보내진 데이터에 _search=true 가 추가된다.

 - stringResult 옵션을 true로 설정 시 서버에 보내지는 데이터는 string 이고 보내진 데이터의 구조는 '고급검색'과 동일하다.





호출 방법
1004lucifer
...
jQuery("#grid_id").filterToolbar(options); // old API
jQuery("#grid_id").jqGrid('filterToolbar', options); // new API
...
 - grid_id 는 이미 생성된 그리드 ID 이다.
 - options는 다른 구성설정을 포함하는 객체이다. (아래 참조)

 - 위와 같이 실행하면 다음과 같은 검색 요소가 생성된다.

이 메소드는 colModel 에서 검색하기위한 정의를 사용한다. (링크 참조)


filterToolbar 메소드의 옵션

OptiontypeDescriptionDefault
autosearchboolean검색은 다음 규칙에 따라 수행된다.
text Element: 값을 입력하고 검색을 하려할 때 Enter키를 누를 때 수행
select Element: 값 변경이 될 때 수행
true
beforeSearchfunction검색전에 발생하는 이벤트이며 그리드를 trigger 하기전에 호출된다.
이벤트가 true를 반환하면 trigger가 수행되지 않는다.
이 경우 자체 검색 파라메터를 구성하고 그리드를 trigger 하면 데이터를 검색 할 수 있다.
다른 반환값은 trigger가 수행된다.
null
afterSearchfunction검색 후 발생하는 이벤트null
beforeClearfunction입력된 값을 지우기전에 발생하는 이벤트(clearToolbar 활성화됨)이며, search Element에서 데이터를 지우기전에 호출된다.
이벤트가 true를 반환하면 trigger가 발생하지 않으며, 이경우에 자신만의 search파라메터를 구성하고 그리드를 trigger 할 수 있다.
다른 반환값은 trigger가 실행된다.
null
afterClearfunction입력된 값을 지운 후에 발생하는 이벤트 (clearToolbar 활성화됨)null
searchOnEnterboolean검색이 적용되는 방법을 결정하며, true인경우 autosearch옵션을 참고하고 false인경우 사용자가 일부 문자를 입력 시 즉시 검색이 수행된다.true
stringResultboolean검색을 수행할때 데이터를 서버에 보내는 방법을 결정한다.
false인경우 key:value 쌍으로 보내지며
true인경우 searchGrid 메소드와 동일하게 서버에 보내진다.
고급검색의 옵션을 참고해라
false
groupOpstring이 옵션은 stringResult 옵션이 true이면서 group 조작(operation)을 정했을 경우에만 유효하며, AND 및 OR값을 가질 수 있다.
고급검색의 옵션을 참고해라
AND
defaultSearchstring검색 수행 시 기본 검색 연산자(operator)를 지정하며, 유효한 값이 설정 시 모든 필드에서 기본 연산자로 사용이 된다.
사용가능한 옵션은 링크에서 sopt 배열 옵션을 참고해라.
bw
searchOperatorsbooleantrue 설정 시 사용자가 검색할 때 select 조작(operation)을 허용하며, 클릭 조작(operation)시 필드 근처에 생성된다.
이경우 colModel의 searchoptions에 sopt옵션을 사용하여 표시가능한 연산자(operator)를 구성할 수 있다.
false
operandTitlestring이 옵션은 searchOperators가 true인 경우에만 사용가능하며, 사용자가 조작(operation)버튼에 마우스를 올리면 나타난다.
colModel의 searchoptions에 searchtitle 옵션을 덮어쓸 수 있다.
기본값: 'Click to select search operation.'
operandsobject사용자가 조작(operation)버튼을 클릭했을 때 보여질 단문이며, equal 같은 경우에는 '==' 라고 보여진다.
객체의 기본 셋팅은 아래와 같다.
{ "eq" :"==", "ne":"!", "lt":"<", "le":"<=", "gt":">", "ge":">=", "bw":"^", 
"bn":"!^", "in":"=", "ni":"!=", "ew":"\|", "en":"!@", "cn":"~", 
"nc":"!~", "nu":"#", "nn":"!#", "bt":"..."}.
심볼값이 변경된 경우에만 변경사항이 적용되며, searchOperators 옵션을 참고해라
odataobject검색중일 때 특정 조작에 대해서 긴문자열을 정의하며, 기본 객체는 언어파일에 있고 $.jqrid.search.odata에 있다.
기본값은 아래와 같다.
[{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'}]

searchoptions의 sopt 옵션은 colModel의 특정 필드에 대해서 다른 연산자(operator)를 설정하는데 사용될 수 있다.





검색 toolbar와 filterToolbar를 만들 때 아래의 추가 메소드를 이용할 수 있다.
1004lucifer
MethodDescription
triggerToolbar이 메소드를 호출하면 검색이 수행되고, 그리드의 search 파라메터가 true로 변경되며 서버에 ajax호출이 실행된다.
clearToolbarrequest보낸 search 값이 지워지고 search옵션이 false로 변경되었을 때 가능한 기본값으로 설정한다.
toggleToolbarsearch Element와 toolbar를 토글한다.

위의 3가지 메소드는 new API로 작동이 되지 않는다.

 - 사용방법
...
var sgrid = $("#grid_id")[0];
sgrid.triggerToolbar();





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

2019년 4월 22일 월요일

[jqGrid] 검색 기본 구성 설명







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



검색 기본 구성

 - 그리드의 컬럼은 그리드의 위/아래/컨텐츠를 기반으로 search form 을 사용할 수 있으며 아래와 같은 4가지 방법이 있다.



 1. 툴바 검색
 2. 사용자정의 검색
 3. 단일 필드 검색
 4. 고급검색 (많은 필드와 조건을 포함하는 복잡한 방법)


이러한 방법은 jqGrid의 공통 옵션을 사용하므로 이미 생성된 그리드에서만 호출이 가능하다.


(툴바, 사용자정의 검색을 제외한) 모든 검색모듈은 언어파일에서 아래와 같이 정의된 부분을 사용한다.
$.jgrid = {
...
   search : {
     caption: "Search...",
     Find: "Find",
     Reset: "Reset",
     odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain'],
     groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ],
     matchText: " match",
     rulesText: " rules"
   },
...





colModel 옵션

 - jqGrid v3.5 부터 모든 검색 메소드에 공통 검색 옵션을 사용한다.
 아래는 colModel에서 설정하는 옵션 목록이며, 일부 옵션은 특정 메소드에 적용할 수 없다.


OptionTypeDescriptionDefault
searchboolean필드의 검색가능여부를 지정한다.true
stypestring필드의 검색 타입을 지정한다.
text: input Element가 생성된다.
select: select Element가 생성된다.
text
searchoptionsobject검색 필드의 정의, 이벤트 및 기타 속성을 포함하는 객체 (아래 참조)
searchrulesobject사용자 유효성 검사에 대한 추가 조건이 포함된 객체

searchoptions 는 사용자정의 검색에는 적용되지 않으며, 별도의 옵션을 사용한다.



searchoptions 객체의 속성은 아래와 같다.
1004lucifer
PropertyTypeDescription
dataUrlstring이 옵션은 stype:'select' 인 경우에만 유효하며, select Element를 로드할 url을 나타낸다.
이 옵션을 설정하면 해당 Element는 ajax Request의 응답값으로 채워지게 되며, 데이터는 원하는 옵션이 있는 유효한 html select Element 이어야 한다.
Ex) Request의 응답값은 <select><option value=“1”>One</option> <option value=“2”>Two</option></select> 이렇게 될 수 있다.
이것은 한번만 호출이 된다.
buildSelectfunction이 옵션은 dataUrl 파라메터가 설정된 경우에만 사용되며, 이경우에 서버에서 select Element를 응답받지 못한경우 이 함수를 사용하여 select를 만들 수 있다.
이 함수는 dataUrl옵션에서 원했던 select와 options 값을 가지는 string을 반환해야 한다.
이 함수에 전달된 파라메터는 서버의 응답값이다.
dataInitfunction이 함수가 설정되면 Element가 생성될 때 한번만 호출이 되며, 함수에는 Element 객체를 전달한다.

dataInit: function(elem) {
  do something
}

또한 이 함수를 사용하여 datepicker, timepicker 등등 연결할 수 있다.

Ex)
dataInit : function (elem) {
  $(elem).datepicker();
}
dataEventsarraydata Element에 적용할 이벤트 리스트이며,
$(“#id”).bind(type, [data], fn) 방법과 같이 data Element에 이벤트를 바인딩 한다.

아래와 같이 기술한다.
dataEvents: [
  { type: 'click', data: { i: 7 }, fn: function(e) { console.log(e.data.i); }},
  { type: 'keypress', fn: function(e) { console.log('keypress'); } }
]
attrobjectattr은 생성된 Element에 유효한 속성을 설정할 수 있는 객체이며, 아래와 같이 title을 설정할 수 있다.
attr : { title: “Some title” }
searchhiddenboolean기본적으로 그리드에서 hidden Element는 검색할 수 없지만, 그런경우 검색을 가능하게 하려면 이 옵션을 true로 설정하면 가능하다.
soptarray이 옵션은 사용자검색을 제외한 모든 필드검색에서 사용되며, Element에 적용되는 작업을 결정한다.
만약 설정하지 않으면 사용가능한 모든 옵션이 사용된다.
툴바검색을 사용하면 첫번째 Element에서 사용되며, 모든 사용가능한 옵션은 아래와 같다.
['eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc']
해당 텍스트는 언어파일에 있으며 의미는 아래와 같다.
['equal','not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain']
sopt 배열의 요소는 순서와 상관없이 섞어쓸 수 있다.
defaultValuestring검색 input Element가 비어있지 않다면 기본값을 셋팅해라
(문서설명이 반대가 아닌가 싶기도..)
valuemixed이 옵션은 stype:select 인 경우와 검색 다이얼로그에 select 옵션이 정의된경우에 사용된다.
stype:select가 설정되고 dataUrl옵션이 설정되지 않은경우 이 값은 string 또는 object가 될 수 있다.

옵션이 string으로 설정된경우 반드시 세미콜론(;)으로 끝나고 콜론(:)으로 구분되는 value:label 쌍이 포함되어야 하며, 마지막은 세미콜론(;)으로 끝나면 안된다.
ex) editoptions: {value:“1:One;2:Two”}

객체인경우 value:name 형식으로 정의되어야 한다.
ex) editoptions: {value:{1:'One',2:'Two'}}
clearSearchboolean기본값: true
false로 설정 시 검색필드의 끝에있는 (검색어를 지우는)X아이콘이 비활성화 된다.
1004lucifer


select 타입의 검색에서 searchoptions객체의 dataUrl이 사용되지 않거나 정의되지 않으면, select 타입의 검색은 searchoptions의 value속성으로 지정되며 아래의 형식과 같다.
editoptions:{value:"1:one;2:two"}
(다른 검색방법은 아래를 참조)








colModel 규칙

<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', index:'price', width:60, search:true, stype:'text', searchoptions:{dataInit:datePick, attr:{title:'Select Date'}} },
      ...
   ]
...
});
datePick = function(elem)
{
   jQuery(elem).datepicker();
}
</script>


검색 규칙
 - 이 옵션은 colModel에서 사용되며, 검색가능한 Element에 추가속성을 추가한다.
<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', ..., searchrules:{required:true....}, search:true },
      ...
   ]
...
});
</script>

사용가능한 옵션은 아래와 같다.
1004lucifer
OptionTypeDescription
requiredbooleantrue 설정 시 값이 비어있으면 오류 메시지가 표시된다.
numberbooleantrue 설정 시 숫자가 아닌경우 오류 메시지가 표시된다.
integerbooleantrue 설정 시 정수가 아닌경우 오류 메시지가 표시된다.
minValuenumber(integer)true 설정 시 값이 이보다 작으면 오류 메시지가 표시된다.
maxValuenumber(integer)true 설정 시 값이 이보다 크면 오류 메시지가 표시된다.
emailbooleantrue 설정 시 유효한 이메일이 아니면 오류 표시
urlbooleantrue 설정 시 올바를 url이 아닌경우 오류 메시지 표시
datebooleantrue 설정 시 datefmt옵션의 값은 get이며 date형식이 아닌경우 오류 메시지 표시
(설정하지 않으면 ISO날짜가 사용됨)
timebooleantrue 설정 시 시간이 아니면 오류 메시지를 표시
현재 hh:mm 포멧을 사용하며 옵션으로 am/pm으로 끝날 수 있다.
custombooleantrue 설정 시 custom_func 함수를 통해 사용자정의 규칙을 선언한다. (아래 참조)
custom_funcfunction이 옵션은 custom 옵션이 true인 경우 사용가능.
이 함수에는 colModel의 속성 이름과 체크할 값이 파라메터로 전달된다.

이 함수는 아래의 파라메터를 사용하여 배열을 반환해야 한다.
첫번째 파라메터는 true|false 이며, 검사의 성공여부를 나타내며, 두번째 파라메터는 첫번째 값이 true인경우에만 감지되며 사용자에게 표시될 오류메시지를 나타낸다.
ex) [false,“Please enter valid value”]


 - http://stackoverflow.com/a/9011733 링크에 따르면 검색규칙은 검색다이얼로그 에서만 사용되며, 검색 필터에서는 사용되지 않는다.




사용자정의 검사 예제
<script>
function mypricecheck(value, colname) {
if (value < 0 || value >20) 
   return [false,"Please enter value between 0 and 20"];
else 
   return [true,""];
}
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', ..., searchrules:{custom:true, custom_func:mypricecheck....}, search:true },
      ...
   ]
...
});
</script>





알아야 할 사항


 - 모든 검색모듈은 그리드의 url 파라메터를 사용하여 검색을 수행하며, 일부 method에는 url이 사용할 수 있는 추가 구분옵션이 있다.
 - 검색이 수행되면 postData 배열은 검색에 필요한 데이터로 채워진다.
 - 검색중 표시를 위해 그리드옵션의 search 파라메터가 true로 셋팅되며, 서버에 보낼 때 사용되는 GET 또는 POST의 배열데이터 이름을 _search를 이용하여 얻을 수 있다. (이름주의)
 - Navigator에서 refresh버튼을 사용할 때 그리드에서 trigger가 되면 search 옵션이 false로 셋팅된다.
 - 모든 검색 메소드는 postData배열의 검색데이터를 삭제하는 자신만의 메소드가 생성된다.






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

2019년 4월 21일 일요일

[jqGrid] 사용자정의 Formatter 설명







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



Custom Formatter
1004lucifer
 - 특정 컬럼에서 사용자 전용 formatter 를 정의할 수 있으며, 보통 function 으로 되어있다.
  formatter 옵션에서 설정할 때 아래와 같이 따옴표(')로 묶지 않고 괄호()를 입력하지 않고 함수 이름만 표시하면 된다.

<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', index:'price', width:60, align:"center", editable: true, formatter:currencyFmatter},
      ...
   ]
...
});
 
function currencyFmatter (cellvalue, options, rowObject)
{
   // do something here
   return new_format_value
}
</script>





정의, 파라메터

사용자 정의 formatter에는 아래와 같은 매개변수가 전달된다.

function myformatter ( cellvalue, options, rowObject )
{
// format the cellvalue to new format
return new_formated_cellvalue;
}

* 올바르게 작동하려면 항상 리턴값을 반환해야 한다.

 - cellvalue: format을 지정할 값
 - options: {rowId: rid, colModel: cm} Element를 포함하는 객체
  1) rowId: row의 id
  2) colModel: jqGrid의 colModel배열의 컬럼 속성 객체
 - rowObject: datatype 옵션에 정의된 형식으로 표현된 row 데이터
  1) datatype: xml/xmlstring - rowObject는 xmlReader 규칙에 따라 제공되는 xml 노드
  2) datatype: json/jsonstring - rowObject는 jsonReader 규칙에 따라 배열로 제공





Unformatting
1004lucifer
 - 기본 Formatter(링크) 에서 설명했듯이 모든 기본타입은 editing 모듈과 호환되며, 숫자, 링크, 메일 등을 변환하여 올바르게 편집할 수 있다.
또한 getRowData, getCell 과 같은 데이터를 가져오는 메소드는 이 unformat을 이용하여 원래의 값을 가져온다.

여기서 발생하는 문제는 사용자정의 Formatter를 사용하고 getRowData, getCell과 같은 메소드를 사용하여 원래 값으로 되돌리고 싶은데 그런경우 colModel에서 unformatter 기능을 사용하여 가능하다.

예) 이미지 표시 및 경로 편집
<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', index:'price', width:60, align:"center", editable: true, formatter:imageFormat, unformat:imageUnFormat},
      ...
   ]
...
});
 
function imageFormat( cellvalue, options, rowObject ){
 return '<img src="'+cellvalue+'" />';
}
function imageUnFormat( cellvalue, options, cell){
 return $('img', cell).attr('src');
}
</script>
사용자정의 unformat 함수에는 아래와 같은 파라메터가 전달된다.

 - cellvalue: format되지 않은 값 (순수 텍스트)
 - options: {rowId: rid, colModel: cm} Element를 포함하는 객체
  1) rowId: row의 id
  2) colModel: jqGrid의 colModel배열의 컬럼 속성 객체
 - cellobject: jQuery cell 객체. cell Element에서 다른 것들을 얻는데 사용할 수 있으며, 예를들어 jQuery(cellobject).html() 을 이용하여 텍스트 대신에 HTML 컨텐츠를 가져올 수 있다.


예제

<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', index:'price', width:60, align:"center", editable: true, formatter:currencyFmatter, unformat:unformatCurrency},
      ...
   ]
...
});
 
function currencyFmatter (cellvalue, options, rowObject)
{
 
   return "$"+cellvalue;
}
function  unformatCurrency (cellvalue, options)
{
 
   return cellvalue.replace("$","");
}
 
</script>
그리드에 삽입되거나 업데이트 된 값이 123.00 이면 그리드에서 $123.00 으로 보여주고, getRowData, getCell 같은 메서드 또는 모든 editing 모듈을 사용하면 123.00이 된다.







공용 formatter 함수 만들기
1004lucifer
 - 여러 곳에서 사용자정의 format/unformat 함수를 코드에서 사용하려는 경우가 있다.

jqGrid javascript 파일이 로드된 이후에 아래와 같이 스크립트 태그에서 정의 할 수 있다.
(또는 간단히 head 영역에 include 하는 file을 생성할 수도 있다.)

<script type="text/javascript">
jQuery.extend($.fn.fmatter , {
    currencyFmatter : function(cellvalue, options, rowdata) {
    return "$"+cellvalue;
}
});
jQuery.extend($.fn.fmatter.currencyFmatter , {
    unformat : function(cellvalue, options) {
    return cellvalue.replace("$","");
}
});
 
</script>

위와 같이 작업 후 코드에서 수행해야 하는 작업은 아래와 같다.
<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ 
      ... 
      {name:'price', index:'price', width:60, align:"center", editable: true, formatter:'currencyFmatter'},
      ...
   ]
...
});
(이경우에는 unformat 형식을 지정하지 않아도 된다.)




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

[jqGrid] 기본 Formatter 설명







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



(미리 정의된) 기본 Formatter

 - Formatter는 form, inline, cell 편집에서 셀 내용의 고급포메팅을 제공하며, 기본형식과 사용자 정의형식 2가지 방법중 한가지를 사용할 수 있다.
 - jqGrid의 Formatter 모듈이 로딩이 되어야 사용이 가능하다.





언어 옵션
1004lucifer
 - 기본 언어 포메팅 옵션은 grid.locale-xx 로 되어있는 언어파일에 지정되어 있다.
  (기본 포메터 옵션은 언어파일별로 다르다)

아래는 영어파일의 기본 포메터 옵션
jQuery.jgrid = {
...
   formatter : {
     integer : {thousandsSeparator: " ", defaultValue: '0'},
     number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: '0.00'},
     currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'},
     date : {
       dayNames: [
         "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat",
         "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
       ],
       monthNames: [
         "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
         "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
       ],
       AmPm : ["am","pm","AM","PM"],
       S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'},
       srcformat: 'Y-m-d',
       newformat: 'd/m/Y',
       parseRe: /[Tt\\\/:_;.,\t\s-]/,
       masks : {
         ISO8601Long:"Y-m-d H:i:s",
         ISO8601Short:"Y-m-d",
         ShortDate: "n/j/Y",
         LongDate: "l, F d, Y",
         FullDateTime: "l, F d, Y g:i:s A",
         MonthDay: "F d",
         ShortTime: "g:i A",
         LongTime: "g:i:s A",
         SortableDateTime: "Y-m-d\\TH:i:s",
         UniversalSortableDateTime: "Y-m-d H:i:sO",
         YearMonth: "F, Y"
       },
       reformatAfterEdit : false
     },
     baseLinkUrl: '',
     showAction: '',
     target: '',
     checkbox : {disabled:true},
     idName : 'id'
   }
...

여기에 기본 포메터를 사용하기전에 검토하거나 변경하기 위한 모든 옵션이 있으며, colModel의 formatoptions 파라메터를 이용해 특정 컬럼에 대해 재정의가 가능하다.


아래와 같이 colModel 에서 옵션 포메터를 사용시
jQuery("#grid_id").jqGrid({
...
   colModel : [
   ...
      {name:'myname', ... formatter:'number', ...},
   ...
   ],
...
});
활성 언어셋 내부의 number 규칙에 따라 myname 컬럼의 내용을 포메팅 한다.
예를들어 원래의 값이 '1234.1' 이라면 위의 옵션을 사용하여 그리드에 들어가는 값은 '1 234.10' 값이 된다.





컬럼 특정 옵션

 - Formatter 옵션은 언어파일의 기본값에 대해서 특정 컬럼에 재정의 할 수 있으며, colModeld안에서 formatoptions 배열을 이용해 정의할 수 있다.

jQuery("#grid_id").jqGrid({
...
   colModel : [
   ...
      {name:'myname', ... formatter:'currency', formatoptions:{decimalSeparator:",", thousandsSeparator: ",", decimalPlaces: 2, prefix: "$ "} } ,
   ...
   ],
...
});
위와같이 정의하여 언어파일의 기본값을 재정의 하며, 특정 포멧타입에 대해서 적절한 값을 넣어줘야 한다.





기본 Format 유형
1004lucifer
 - 기본 포멧 유형은 Editing 모듈과 호환된다.
 즉, numbers, links, e-mails 등을 변환하여 올바르게 Editing이 가능하다.


TypeOptionsDescription
integerthousandsSeparator,
defaulValue
thousandsSeparator: 천단위의 구분기호
defaultValue: 데이터가 없는경우 기본값
numberdecimalSeparator,
thousandsSeparator,
decimalPlaces,
defaulValue
thousandsSeparator: 천단위의 구분기호
decimalSeparator: 소수 자리수 구분기호
decimalPlaces: 소수 자리수 지정
defaultValue: 데이터 없는경우 기본값
currencydecimalSeparator,
thousandsSeparator,
decimalPlaces,
defaulValue,
prefix,
suffix
number와 동일하지만 두가지 옵션을 추가로 제공
prefix: 숫자 이전에 삽입되는 텍스트
suffix: 숫자 이후에 삽입되는 텍스트
datesrcformat,
newformat,
parseRe
srcformat: 변환해야 하는 날짜의 형식(source format)
newformat: 새로운 날짜의 형식
Date Format은 PHP변환 형식으로 정의되어 있으며, 또한 기본 Date Format으로도 사용이 가능하다. (기본 Date Formatting은 mask옵션을 참고)
parseRe: date string을 구문분석하기위한 표현식(regex)
emailnone메일 유형을 사용하면 e-mail 앞에 'mailto:' 와 함께 href 가 추가된다.
linktarget기본값: null
이 옵션을 사용하면 href 태그에 cell값을 넣고 target 속성에 링크를 구성한다.
showlinkbaseLinkUrl,
showAction,
addParam,
target,
idName
baseLinkUrl is the link.
showAction: baseLinkUrl 뒤에 추가되는 추가 값
addParam: idName속성 뒤에 추가할 수 있는 추가 파라메터
target: 추가 속성으로 추가
idName: 기본적으로 id 이며, showAction 뒤에 추가되는 첫번째 파라메터
checkboxdisabled기본값: true
checkbox의 변경여부를 지정.
false 로 설정 시 checkbox 값을 변경할 수 있다.
selectnone실제 선택이 아니라 특이케이스, 아래 노트 참조
actions{
keys: false,
editbutton : true,
delbutton : true,
editformbutton: false,
onEdit : null,
onSuccess: null,
afterSave:null,
onError: null,
afterRestore: null,
extraparam: {oper:'edit'},
url: null,
delOptions: {},
editOptions : {}
}
이 타입은 inline editing을 위한 특정 컬럼에 button을 추가하는 손쉬운 방법이며, edit, delete 두가지 action을 추가한다.
editformbutton 파라메터를 true로 설정하면 inline editing 대신 form editing 다이얼로그가 나타난다.
editOptions 옵션은 form editing 에서만 사용이 된다.





Select 포메터 유형
1004lucifer
 - select 타입은 실제 select가 아니며, 일부 editing 모듈과 edittype:'select' 에서 사용된다.


이전 버전에서는 아래와 같이 key가 아닌 그리드의 select값을 전달했었다.
<script>
jQuery("#grid_id").jqGrid({
...
   colModel : [ {name:'myname', edittype:'select', editoptions:{value:"1:One;2:Two"}} ... ],
...
});
</script>
이경우 그리드 데이터의 myname 컬럼에 'One'이나 'Two' 가 셋팅되어야 했으나 아래와 같은 설정으로 key값에 '1' 또는 '2' 가 있어도 'One' 또는 'Two'가 보여지게 된다.
<script>
jQuery("#grid_id").jqGrid({
...
   colModel : [ {name:'myname', edittype:'select', formatter:'select', editoptions:{value:"1:One;2:Two"}} ... ]
...
});
</script>





showlink 예제

colModel 에서 아래와 같이 showlink가 정의되어 있다고 가정을 해보자.
<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ {name:'myname', formatter:'showlink', formatoptions:{baseLinkUrl:'someurl.php', addParam: '&action=edit'}, ...} 
      ... 
   ]
...
});
</script>
그런경우 아래와 같이 결과가 나온다.
http://localhost/someurl.php?id=123&action=edit


링크의 id값 대신 myid로 변경하려면 아래와 같이 하면 되며
<script>
jQuery("#grid_id").jqGrid({
...
   colModel: [ {name:'myname', formatter:'showlink', formatoptions:{baseLinkUrl:'someurl.php', addParam: '&action=edit', idName:'myid'}, ...} 
      ... 
   ]
...
});
</script>
아래와 같이 결과가 나온다.
http://localhost/someurl.php?myid=123&action=edit







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