그리드를 생성한 후 아래 처럼 filter 옵션을 추가 할 수 있다
$("#gridId").jqGrid("filterToolbar",{
//options
})
근데 multiselect 옵션을 사용 중 일때 체크한 것이 유지되지 않는다
그래서 검색전에 체크된 row를 저장하고 검색후에 저장된 row를 체크하게 구현함
var tempSelectedTarget = [];
let gridId = "GridID";
$("#"+gridId).jqGrid('filterToolbar',{
autosearch: true,
stringResult: true,
searchOnEnter: true,
defaultSearch: "cn",
beforeSearch: function (){ //체크된 데이터 임시저장
// var rowId = $("#"+gridId).jqGrid('getGridParam', 'selarrrow'); 체크 안된것도 가져오기 위해 이거 사용 x
var ids = $("#"+gridId).jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var data = {};
data.id = $("#"+gridId).jqGrid("getRowData", ids[i]).ComponentID;
data.value = $("#"+gridId).jqGrid("getRowData", ids[i]).ComponentName;
data.type = $("#"+gridId).jqGrid("getRowData", ids[i]).ComponentType;
if (!$("input:checkbox[id='jqg_" + gridId + "_" + ids[i] + "']").is(":checked")) {
for (var j = 0; j < tempSelectedTarget.length; j++) {
if (tempSelectedTarget[j].id === data.id) {
tempSelectedTarget.splice(j, 1);
j--;
}
}
}else{
var duplicateFlag = false;
for(var j = 0; j < tempSelectedTarget.length; j++){
if(tempSelectedTarget[j].id === data.id){
duplicateFlag = true;
}
}
if(!duplicateFlag){
tempSelectedTarget.push(data);
}
}
}
},
afterSearch: function (){ //체크해줌
for(var i = 0; i<tempSelectedTarget.length; i++){
var gridDatas = $("#"+gridId).jqGrid("getRowData");
for(var j =0; j<gridDatas.length; j++){
if(tempSelectedTarget[i].id === gridDatas[j].ComponentID){
$("#"+gridId).jqGrid('setSelection', j+1, true); //rowid는 1부터
}
}
}},
});
'gridLib > jqGrid' 카테고리의 다른 글
jqgird sort, filter (colmodel name/index, colName) (0) | 2022.10.23 |
---|---|
jqGrid 가로 스크롤 (데이터/row 없을 때) (0) | 2022.10.23 |
JqGrid 공백(setCell) (0) | 2022.07.11 |
JqGrid row추가, 삭제 / 데이터 추가 방법 (0) | 2021.10.09 |
jqGrid 속성 확인/변경 (0) | 2021.10.04 |