2011-03-22 4 views
18

한 페이지에 두 개의 jqgrid를 사용하고 있습니다. 두 번째 그리드에서 열 정렬이 필요하기 때문에 두 번째 그리드는 loadonce: true을 사용했습니다. 서버 포스트 뒤에 두 그리드를 모두 다시로드해야합니다. (두 번째 눈금에 업데이트 된 값을 표시해야 함). 첫 번째 그리드는 loadonce 속성을 사용하지 않기 때문에 잘로드됩니다. 내 질문은 우리가 loadonce 속성과 reloadGrid 속성을 함께 사용할 수 있습니까? (loadonce 속성을 그리드에 동적으로 설정하여) 그렇지 않으면이 경우 서버 측 정렬을 수행해야합니까? 조언을 부탁드립니다. 미리 감사드립니다.jqgrid reloadGrid가 true로 설정된 loadonce

답변

68

loadonce:true jqGrid를 사용하는 경우 그리드에서 데이터를 처음로드 한 후 datatype 매개 변수를 'local'로 변경하십시오. 모든 다음 그리드 재로드 (정렬, 페이징, 필터링)는 로컬에서 작동합니다. 서버에서 다시 그리드 데이터를 새로 고치려면 datatype을 원래 값 ('json'또는 'xml')으로 설정해야합니다. 업데이트]

$("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid'); 

: 예를 들어Free jqGrid은 첫 번째 릴리스 (버전 4.8부터 시작)로 시작 reloadGridfromServer: true 옵션을 지원합니다. 그래서 같은 코드를

$("#list").trigger("reloadGrid", { fromServer: true, page: 1 }); 

과 같이 사용할 수 있습니다. 주요 이점 : 이러한 코드는 datatype ("json", "jsonp", "xml" 등등)의 초기 값으로 정상적으로 작동합니다. 무료 jqGrid는 "local"으로 변경하기 전에 내부 dataTypeOrg 안에 datatype의 원래 값을 저장합니다.

자유로운 jqGrid의 또 다른 유용한 옵션은 reloadGridOptionsnavGrid이고 reloadGrid의 기본 옵션을 지정할 수 있습니다. 따라서 하나의 예를 들어 추가 navGrid 기본값을 설정있는 jqGrid의

loadonce: true, 
navOptions: { reloadGridOptions: { fromServer: true } } 

옵션을 사용할 수있다. 결과적으로 탐색 막대의 "재로드"버튼을 클릭하면 로컬 재로드 대신 서버에서 그리드가 다시로드됩니다.

+0

감사합니다. 이것은 최고입니다. 그것은 내가 필요로하는 것과 작동하는 것입니다. – Sam

+0

@ Sam : 천만에! – Oleg

+0

@Oleg와 Sam, [이 질문에 대한 의견이 있으십니까?] (http://stackoverflow.com/q/7093874/320399)? 10 초마다 서버에서 내 데이터를 새로 고쳐서 최신 데이터를 가지고 있는지 확인하려고합니다. – blong

0

니스 지난 일주일 동안 노력했다 솔루션은 loadonce:false

+0

다음 번에 감사드립니다. 서식을 따릅니다. –

0

그냥 나를 위해, 다음 줄이 충분하지, 말을 사용하여 데이터를 다시로드 사용

jQuery("#datalist").jqGrid().setGridParam(
    { 
     datatype:'xml', 
     page:1, 
     url : '<%=request.getContextPath()%>/PreviewReport?cmd=1&fromdate='+vfromDate+'&todate='+vtoDate+'&status='+vstatus+'&keyword='+vkeyword+'&mdn='+vmdn+'&filetype='+vfiletype 
    } 
).trigger("reloadGrid"); 

완벽 , 내 데이터를 새로 고침하는 중 loadonce:true jqGrid :

$("#MikesGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid'); 

그 줄에서 내 JSON 데이터를로드 한 코드를 호출하여 jqGrid을 채웠지 만 그리드의 행을 새로 고치지 않았습니다.

내 솔루션은있는 jqGrid 강제 언로드에, 그리고 는 다음을 다시 내 함수를 호출.

$("#MikesGrid").jqGrid('GridUnload'); 

아마도 나는 불행했습니다.

Btw, 나는 기회를 잡았을 때 jqGrid에 두 개의 버튼을 추가하는 일반 JavaScript 함수를 작성하고 (loadonce) 데이터를 새로 고치는 방법과 jqGrid 데이터를 두 번째 버튼으로 내보내는 방법을 문서로 작성하겠습니다. 실제 Excel 파일, 내 라이브러리 사용 :

Export jqGrid to an Excel file

내가 재사용 가능한 코드를 좋아을!

0
$("#shoppingCatalog").jqGrid('GridUnload'); 

구조를 제거하면 코드가 다음 서버 콜백의 데이터로 그리드를 다시 작성할 수 있습니다.

관련 문제