2011-08-01 3 views
0

간단한 서브 그리드를 사용하는 jqGrid (4.1.1)가 있습니다. 서브 그리드를보기 위해 레코드가 더하기로 출력되면 정상적인 것과 다른로드 아이가 나타납니다.jqGrid의 하위 그리드에 대한 loadui를 변경할 수 있습니까?

나의 현재 구성은 loadui: none이고, beforeRequest 이벤트에서는 내 자신의 로더를 보여줍니다.

subGridBeforeExpand 이벤트에서 내 사용자 지정 이벤트를 사용하면 내 메시지와 기본 메시지가 표시됩니다. 또한로드가 완료되면 내 div를 숨길 곳을 볼 수 없습니다. subGridRowExpanded이 적합한 장소가 아닙니다. 한마디로

:

  1. 인가가 아 격자 loadui을 숨기거나 내가 그것을 숨기기 위해 내 자신의 자바 스크립트를 롤백해야 할 설정있는 jqGrid?
  2. 로더를 닫을 수 있도록 subgrid가로드되었는지 확인할 수있는 이벤트는 무엇입니까?

미리 감사드립니다.

답변

1

당신이 아 격자의 코드를 보면 당신은 here에게 로딩 DIV 단지 반대편에

$("#load_"+ts.p.id).show(); 

표준을 표시하는 코드 (주) 그리드로 표시됩니다 장소를 찾을 수 다음과 같은 모양 (여기 참조)

beginReq = function() { 
    ts.grid.hDiv.loading = true; 
    if(ts.p.hiddengrid) { return;} 
    switch(ts.p.loadui) { 
     case "disable": 
      break; 
     case "enable": 
      $("#load_"+$.jgrid.jqID(ts.p.id)).show(); 
      break; 
     case "block": 
      $("#lui_"+$.jgrid.jqID(ts.p.id)).show(); 
      $("#load_"+$.jgrid.jqID(ts.p.id)).show(); 
      break; 
    } 
} 

그래서 당신이 설정 loadui: "disable"는 주요 그리드에 사용됩니다 것을 볼 수 있습니다. 위의 코드에서 loadui 값이 "enable" 또는 "block" (알 수없는 "none"값처럼) 인 경우 loadui: "disable"으로 해석됩니다.

보기에서 이것은 서브 브리지의 버그입니다.

해결 방법은 을 작성한 후 jqGrid를 작성한 후 로딩 div를 제거하십시오.. 그리드의 테이블 요소가 id="list" 예를 들어, 다음 다음 줄이있는 경우 :

$("div#load_list").remove(); 

는 사업부를 삭제하고 주요 그리드와 아 격자 모두를 볼 수 없을 것입니다.

업데이트 됨 댓글에 기반 : OK! 이제 네 문제를 이해한다. 그 전에는 datatype: 'local'을 사용했습니다. 일부 원격 데이터 유형 및 blockUI 플러그인을 사용하는 경우 다음을 수행 할 수 있습니다. 서브 그리드에 대해 jqGrid에서 사용하는 ajax 호출은 현재 here입니다. complete 이벤트를 사용하므로 successerror 이벤트는 jQuery.ajax이 무료입니다. 따라서 이벤트를 사용하여 로딩 오버레이를 닫을 방법 인 .unblock() 또는 $.unblockUI() 메서드를 호출 할 수 있습니다.당신은 문제가 해결되지 만약 당신이 귀하의 질문에 당신이 blockUI 플러그인을 사용하고 내가 차단 해제 방법의 호출을 삽입하여 코드를 수정하는 방법을 설명하는 코드 부분을 포함한다있는 jqGrid

$("#list").jqGrid({ 
    // options of grid of subgrid ... 
    ajaxSubgridOptions { 
     success: function() { 
      $.unblockUI(); // or $("#list").unblock(); 
     }, 
     error: function() { 
      $.unblockUI(); // or $("#list").unblock(); 
     } 
    } 
); 

ajaxSubgridOptions 매개 변수를 사용할 수 있습니다 .

+0

본인은 이것이 버그로 간주된다는 데 동의합니다. 당신의 솔루션은 매력처럼 작동합니다. 하위 그리드로드가 완료되면 내 로더를 숨기는 방법에 대한 생각이 있습니까? – IronicMuffin

+0

@IronicMuffin : 죄송합니다. 무슨 뜻인지 이해가 안됩니다. 어느 "로더"를 숨기시겠습니까? 로더 div를 제거하면 로더가 표시되지 않아야합니다. 당신이 가진 상황을 더 정확하게 설명해 주시겠습니까? 어떤'subgridtype' 예를 들어 사용합니까? – Oleg

+0

로드 중 메시지가있는 자체 오버레이를 표시하기 위해 blockui 플러그인을 사용하고 있습니다. 나는 이것을'subGridBeforeExpand'에 보여 주지만'subGridLoadComplete' 이벤트가 없어서 내 로더를 숨길 수있는 곳을 찾지 못하는 것 같습니다. – IronicMuffin