브라우저 크기를 조정할 때 jqGrid 크기를 조정합니까?
브라우저 창 크기를 조정할 때 jqGrid의 크기를 조정할 수있는 방법 이 있습니까? 여기에 설명 된 방법을 시도 했지만 해당 기술은 IE7에서 작동하지 않습니다.
지금은 불만없이 프로덕션에서이 기능을 사용하고 있습니다 (예 : 사이드 바의 너비 빼기 등).
$(window).bind('resize', function() {
$("#jqgrid").setGridWidth($(window).width());
}).trigger('resize');
후속 조치 :
이 게시물에 표시된 이전 코드는 신뢰할 수 없기 때문에 결국 폐기되었습니다. 이제 jqGrid 설명서에서 권장하는대로 다음 API 함수를 사용하여 그리드 크기를 조정하고 있습니다.
jQuery("#targetGrid").setGridWidth(width);
실제 크기 조정을 수행하려면 다음 논리를 구현하는 함수가 창의 크기 조정 이벤트에 바인딩됩니다.
부모의 clientWidth 및 해당 offsetWidth 속성 (사용할 수없는 경우)을 사용하여 그리드의 너비를 계산합니다.
온 전성 검사를 수행하여 너비가 x 픽셀 이상 변경되었는지 확인합니다 (일부 응용 프로그램 관련 문제를 해결하기 위해).
마지막으로 setGridWidth ()를 사용하여 그리드의 너비를 변경합니다.
다음은 크기 조정을 처리하는 예제 코드입니다.
jQuery(window).bind('resize', function() {
// Get width of parent container
var width = jQuery(targetContainer).attr('clientWidth');
if (width == null || width < 1){
// For IE, revert to offsetWidth if necessary
width = jQuery(targetContainer).attr('offsetWidth');
}
width = width - 2; // Fudge factor to prevent horizontal scrollbars
if (width > 0 &&
// Only resize if new width exceeds a minimal threshold
// Fixes IE issue with in-place resizing when mousing-over frame bars
Math.abs(width - jQuery(targetGrid).width()) > 5)
{
jQuery(targetGrid).setGridWidth(width);
}
}).trigger('resize');
마크 업 예 :
<div id="grid_container">
<table id="grid"></table>
<div id="grid_pgr"></div>
</div>
자동 크기 조정 :
jQgrid 3.5 이상
if (grid = $('.ui-jqgrid-btable:visible')) {
grid.each(function(index) {
gridId = $(this).attr('id');
gridParentWidth = $('#gbox_' + gridId).parent().width();
$('#' + gridId).setGridWidth(gridParentWidth);
});
}
jQgrid 3.4.x의 경우 :
if (typeof $('table.scroll').setGridWidth == 'function') {
$('table.scroll').setGridWidth(100, true); //reset when grid is wider than container (div)
if (gridObj) {
} else {
$('#contentBox_content .grid_bdiv:reallyvisible').each(function(index) {
grid = $(this).children('table.scroll');
gridParentWidth = $(this).parent().width() – origami.grid.gridFromRight;
grid.setGridWidth(gridParentWidth, true);
});
}
}
이것은 나를 위해 잘 작동하는 것 같습니다
$(window).bind('resize', function() {
jQuery("#grid").setGridWidth($('#parentDiv').width()-30, true);
}).trigger('resize');
레이아웃에 960.gs를 사용하고 있으므로 솔루션은 다음과 같습니다.
$(window).bind(
'resize',
function() {
// Grid ids we are using
$("#demogr, #allergygr, #problemsgr, #diagnosesgr, #medicalhisgr").setGridWidth(
$(".grid_5").width());
$("#clinteamgr, #procedgr").setGridWidth(
$(".grid_10").width());
}).trigger('resize');
// Here we set a global options
jQuery.extend(jQuery.jgrid.defaults, {
// altRows:true,
autowidth : true,
beforeSelectRow : function(rowid, e) { // disable row highlighting onclick
return false;
},
datatype : "jsonstring",
datastr : grdata, // JSON object generated by another function
gridview : false,
height : '100%',
hoverrows : false,
loadonce : true,
sortable : false,
jsonReader : {
repeatitems : false
}
});
// Demographics Grid
$("#demogr").jqGrid( {
caption : "Demographics",
colNames : [ 'Info', 'Data' ],
colModel : [ {
name : 'Info',
width : "30%",
sortable : false,
jsonmap : 'ITEM'
}, {
name : 'Description',
width : "70%",
sortable : false,
jsonmap : 'DESCRIPTION'
} ],
jsonReader : {
root : "DEMOGRAPHICS",
id : "DEMOID"
}
});
// 아래에 정의 된 기타 그리드 ...
링크의 코드에서 빌리면 다음과 같이 시도 할 수 있습니다.
$(window).bind('resize', function() {
// resize the datagrid to fit the page properly:
$('div.subject').children('div').each(function() {
$(this).width('auto');
$(this).find('table').width('100%');
});
});
이런 식으로 실제로 질문에서 원하는 것처럼 보이는 window.onresize 이벤트에 직접 바인딩합니다.
If your grid is set to 100% width though it should automatically expand when its container expands, unless there are some intricacies to the plugin you're using that I don't know about.
If you:
- have
shrinkToFit: false
(mean fixed width columns) - have
autowidth: true
- don't care about fluid height
- have horizontal scrollbar
You can make grid with fluid width with following styles:
.ui-jqgrid {
max-width: 100% !important;
width: auto !important;
}
.ui-jqgrid-view,
.ui-jqgrid-hdiv,
.ui-jqgrid-bdiv {
width: auto !important;
}
The main answer worked for me but made the app extremely unresponsive in IE, so I used a timer as suggested. Code looks something like this ($(#contentColumn)
is the div that the JQGrid sits in):
function resizeGrids() {
var reportObjectsGrid = $("#ReportObjectsGrid");
reportObjectsGrid.setGridWidth($("#contentColumn").width());
};
var resizeTimer;
$(window).bind('resize', function () {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(resizeGrids, 60);
});
Hello Stack overflow enthusiasts. I enjoyed most of answers, and I even up-voted a couple, but none of them worked for me on IE 8 for some strange reason... I did however run into these links... This guy wrote a library that seems to work. Include it in your projects in adittion to jquery UI, throw in the name of your table and the div.
http://stevenharman.net/blog/archive/2009/08/21/creating-a-fluid-jquery-jqgrid.aspx
autowidth: true
worked perfectly for me. learnt from here.
This works..
var $targetGrid = $("#myGridId");
$(window).resize(function () {
var jqGridWrapperId = "#gbox_" + $targetGrid.attr('id') //here be dragons, this is generated by jqGrid.
$targetGrid.setGridWidth($(jqGridWrapperId).parent().width()); //perhaps add padding calculation here?
});
<script>
$(document).ready(function(){
$(window).on('resize', function() {
jQuery("#grid").setGridWidth($('#fill').width(), false);
jQuery("#grid").setGridHeight($('#fill').height(),true);
}).trigger('resize');
});
</script>
참고URL : https://stackoverflow.com/questions/875225/resize-jqgrid-when-browser-is-resized
'Program Tip' 카테고리의 다른 글
Backbone.js 및 jQuery (0) | 2020.10.04 |
---|---|
Python의 순환 목록 반복기 (0) | 2020.10.04 |
파이썬의 time.sleep ()은 얼마나 정확합니까? (0) | 2020.10.04 |
android.gms.maps.MapFragment를 인스턴스화 할 수 없습니다. (0) | 2020.10.04 |
찾기 명령을 사용하지만 두 디렉토리의 파일 제외 (0) | 2020.10.04 |