2012-01-08 1 views
3

약 40 열의 jqGrid 트리 그리드가 있으므로 브라우저의 크기에 따라 큰 가로 스크롤 막대가 있습니다. 문제는 너비가 너무 커서 페이지가로드되거나 필터 등을 수행 할 때 팝업 메시지가 표시되지 않기 때문입니다. 왜냐하면 화면 오른쪽에 있기 때문입니다."데이터로드 중." jqgrid treegrid의 보이는 화면에있는 메시지?

"데이터로드 중 ..."방법이 있습니까? 전체 현재 보이는 화면 (대신 페이지에서 메시지 센터?

답변

3

같은 문제가있는 jqGrid의 다른 사용자를 가질 수

개인적으로 오버레이를 통해 보여줍니다 loadui: 'block' 설정을 사용하는 것을 선호합니다. 승 그리드 로딩 중 홀 그리드. 이 경우 문제는 그렇게 중요하지 않습니다.

당신이 loadBeforeSend의 내부에 "...로드"사업부를의 위치를 ​​변경하는 경우 당신은 더 나은 결과를 얻을 수 있습니다 :

loadBeforeSend: function() { 
    var $loadingDiv = $("#load_"+$.jgrid.jqID(this.id)), 
     $bdiv = $(this).closest('.ui-jqgrid-bdiv'); 
    $loadingDiv.show().css({ 
     top: (Math.min($bdiv.height(), $(window).height()) - $loadingDiv.height())/2 + 'px', 
     left: (Math.min($bdiv.width(), $(window).width()) - $loadingDiv.width())/2 + 'px' 
    }); 
} 

을 내있는 jqGrid의 기본 코드를 수정하는 것이 좋을 것 opining에서 (정확히 beginReq 함수의 코드를 수정하려면 위의 "Loading ..."div의 위치가 항상 변경된 것입니다.

업데이트 : 코드는 이전과 loadBeforeSend에 배치되어야의 위치 변경 "로드 중 ..."사업부가 될 것입니다

var gridIdAsSelector = $.jgrid.jqID(this.id), 
    $loadingDiv = $("#load_" + gridIdAsSelector), 
    $gbox = $("#gbox_" + gridIdAsSelector); 
$loadingDiv.show().css({ 
    top: (Math.min($gbox.height(), $(window).height()) - $loadingDiv.outerHeight())/2 + 'px', 
    left: (Math.min($gbox.width(), $(window).width()) - $loadingDiv.outerWidth())/2 + 'px' 
}); 

의 아마 더 나은 구현을.

업데이트 2 : The demo입니다. 코드 loadComplate 외부에 포함 시켰습니다.이 코드는 작동 방법을 보여주기위한 용도로만 데모 용으로 사용되었습니다. 데모에서 "로드"볼 수있을 DIV 나는 또한 loadui: 'block' 옵션의 사용의 경우에 표시되는 오버레이를 보여

enter image description here

+0

감사합니다. 이거 훌륭 하네. 또한 loadUI : block을 추가했으며이 두 가지를 결합하여 데이터가로드 될 때 사용자에게 훨씬 더 명확하게 나타냅니다! – leora

+0

@leora : 오신 것을 환영합니다! – Oleg

0

놓습니다 상단이 고정 된 위치에서로드 메시지의 컨테이너와 40 % -60 %에 할당 떠났다. 즉, 그것을

를 해결하는 것

그것은 그런 일이어야합니다. 나는 당신의 질문은 좋은 찾을

.loading-message-container { 
    position : fixed; 
    top:50%; 
    left: 45%; 
}