2014-02-13 2 views
0

ASP.NET WebForms 버전의 jqGrid를 사용하고 있지만 표준 그리드와 동일한 이벤트를 사용할 수 있어야합니다.페이지의 모든 jqGrid가로드되었는지 감지하는 방법은 무엇입니까?

여러 개의 그리드가있는 페이지가 있습니다. 하나 일 수도 있고 여러개 일 수도 있습니다. 10,000 인쇄 (격자에있는 모든 레코드를 표시), A4 용지에 맞추기 위해 크기를 조절하고 window.print()을 인쇄 한 다음 원래 레코드 수로 돌아가서 다시 그리드의 크기를 100 %로 조정하는 인쇄 단추가 있습니다. .

누락 된 부분은 그렇게하기 전에 모든 그리드가로드 될 때까지 기다릴 필요가 있으므로 window.print()을 발사 할시기를 아는 것입니다.

나는하지만 분명히 내가 그들 모두를 추적하는 방법을 잘 모르겠어요 VAR를 재설정 각 그리드, 글로벌 var allGridsLoaded = false;을 가지고 노력하고 VAR를 설정 Load_Complete 이벤트 및 beforePageChange을 사용했다?

Load_Complete 나는 각 그리드를 반복 할 수 있다고 생각하지만로드 된 경우 가장 명확한 방법은 무엇입니까?

답변

1

귀하의 요구 사항을 충분히 이해하고 있는지 잘 모르겠습니다. 그럼에도 불구하고 당신이

  • 가 준비를 시작하기 전에
  • 레지스터 "글로벌"페이지 격자의 총 수에 카운터를 설정 모든 그리드
  • 에 대한 Load_Complete에 그리드의 총 수를 얻을 필요가 날 것으로 보인다 그래서 당신이 정말로 필요한 위의 목록에서 처음 두 가지가 카운터의 값이 0

있을 것이다 경우 인쇄, 그리드를 다시 시작, "글로벌"Load_Complete 손잡이와 window.print()의 내부 카운터를 감소시킵니다. 모든 그리드는 비어있는 <table> 요소를 기반으로 빌드됩니다. jqGrid는 모든 테이블에 "ui-jqgrid-btable" 클래스를 추가합니다. 그래서 당신은 페이지의 모든 격자에 jQuery를 래퍼를 얻을 수

$(".ui-jqgrid-btable") 

를 사용할 수 있습니다. $(".ui-jqgrid-btable").length은 그리드의 수입니다. 모든 그리드에 대한 Load_Complete 일반적인 "세계"를 등록하려면 ( the documentation 참조) jqGridLoadComplete (또는 jqGridAfterLoadComplete) 이벤트를 사용할 수 있습니다

$(".ui-jqgrid-btable").bind("jqGridLoadComplete", function (e, data) { 
    // ... 
}); 

추가 정보 the answer를 참조하십시오.

모든 요구 사항을 구현할 수 있기를 바랍니다.

+0

"jqGridLoadComplete"에 바인딩 된 익명 함수 내부에서 전역 함수'Load_Complete'를 호출하는 경우 익명 함수 내에서 카운터가 감소되고 전역 함수가 한 번만 호출되는 것이 좋습니다. 카운터는 0입니다. 즉, 당신은 함수'All_Load_Complete'을 가질 수 있습니다. 함수 호출 수가 적 으면 속도에 긍정적 인 영향을줍니다 (예 : http://www.slideshare.net/madrobby/extreme-javascript-performance 슬라이드 13-18 참조). –

+0

@Tom : 죄송하지만, 당신을 따라갈 수 없습니다. "All_Load_Complete"기능은 "무슨 뜻입니까? 내가 제안한 것은''jqGridLoadComplete ''이벤트 핸들러 내부의 카운터를 감소시키는 것이다. 그래서 당신의 제안은 무엇입니까? – Oleg

+0

그건 나쁘다. 나는 당신이 당신의 대답에서 세 번째 글 머리표를 읽는 글로벌 기능에서 카운터를 감소 시키라고 제안하고 있다고 생각했습니다. –

관련 문제