क्या ब्राउज़र विंडो के आकार बदलने पर jqGrid का आकार बदलने का कोई तरीका है? मैंने यहाँ वर्णित विधि की कोशिश की है, लेकिन IE7 में वह तकनीक काम नहीं करती है।
जवाबों:
पिछले कुछ समय से बिना किसी शिकायत के उत्पादन में इसका उपयोग किया जा रहा है (अपनी साइट पर सही दिखने के लिए कुछ समय लग सकता है .. उदाहरण के लिए, साइडबार की चौड़ाई घटाना, आदि)
$(window).bind('resize', function() {
$("#jqgrid").setGridWidth($(window).width());
}).trigger('resize');
अनुवर्ती के रूप में:
इस पोस्ट में दिखाए गए पिछले कोड को अंततः छोड़ दिया गया था क्योंकि यह अविश्वसनीय था। अब मैं ग्रिड को आकार देने के लिए निम्न एपीआई फ़ंक्शन का उपयोग कर रहा हूं, जैसा कि jqGrid प्रलेखन द्वारा अनुशंसित है:
jQuery("#targetGrid").setGridWidth(width);
वास्तविक आकार परिवर्तन करने के लिए, निम्न तर्क को लागू करने वाला एक कार्य विंडो के आकार परिवर्तन की घटना के लिए बाध्य है:
अपने माता-पिता के क्लाइंटविड और (यदि वह उपलब्ध नहीं है) का उपयोग करके ग्रिड की चौड़ाई की गणना करें।
यह सुनिश्चित करने के लिए कि x पिक्सल से अधिक चौड़ाई बदल गई है (कुछ एप्लिकेशन-विशिष्ट समस्याओं के आसपास काम करने के लिए) एक sanity check करें
अंत में, ग्रिड की चौड़ाई बदलने के लिए 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);
});
}
}
$(this).setGridWidth(gridParentWidth, true);
यह मेरे लिए अच्छी तरह से काम कर रहा है
$(window).bind('resize', function() {
jQuery("#grid").setGridWidth($('#parentDiv').width()-30, true);
}).trigger('resize');
मैं 960 का उपयोग कर रहा हूँ। लेआउट के लिए इसलिए मेरा समाधान इस प्रकार है:
$(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"
}
});
// अन्य ग्रिड नीचे परिभाषित ...
अगर तुम:
shrinkToFit: false
(निश्चित चौड़ाई कॉलम मतलब)autowidth: true
आप निम्नलिखित शैलियों के साथ तरल पदार्थ की चौड़ाई के साथ ग्रिड बना सकते हैं:
.ui-jqgrid {
max-width: 100% !important;
width: auto !important;
}
.ui-jqgrid-view,
.ui-jqgrid-hdiv,
.ui-jqgrid-bdiv {
width: auto !important;
}
अपने लिंक पर कोड से उधार लेना आप कुछ इस तरह की कोशिश कर सकते हैं:
$(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 ईवेंट के लिए बाध्य कर रहे हैं, जो वास्तव में ऐसा लगता है कि आप अपने प्रश्न से क्या चाहते हैं।
यदि आपका ग्रिड 100% चौड़ाई पर सेट है, हालांकि इसका कंटेनर स्वचालित रूप से विस्तारित होना चाहिए, जब तक कि आपके द्वारा उपयोग किए जा रहे प्लग इन के लिए कुछ पेचीदगियां न हों, जिनके बारे में मुझे जानकारी नहीं है।
मुख्य जवाब ने मेरे लिए काम किया लेकिन IE में ऐप को बहुत गैर-जिम्मेदार बना दिया, इसलिए मैंने सुझाव के अनुसार एक टाइमर का उपयोग किया। कोड कुछ इस तरह दिखता है ( $(#contentColumn)
यह वह विभाजन है जो JQGrid बैठता है):
function resizeGrids() {
var reportObjectsGrid = $("#ReportObjectsGrid");
reportObjectsGrid.setGridWidth($("#contentColumn").width());
};
var resizeTimer;
$(window).bind('resize', function () {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(resizeGrids, 60);
});
हैलो ढेर अति उत्साही। मुझे ज्यादातर जवाबों में मज़ा आया, और मैंने एक-दूजे को वोट भी दिया, लेकिन उनमें से किसी ने भी IE 8 पर मेरे लिए कुछ अजीब वजह से काम नहीं किया ... मैंने फिर भी इन लिंक्स में भाग लिया ... इस आदमी ने एक लाइब्रेरी लिखी, जो उसे लगती है काम। इसे अपने प्रोजेक्ट्स में शामिल करें jquery UI पर, अपनी टेबल और डिव के नाम पर फेंकें।
http://stevenharman.net/blog/archive/2009/08/21/creating-a-fluid-jquery-jqgrid.aspx
autowidth: true
मेरे लिए पूरी तरह से काम किया। यहाँ से सीखा ।
autowidth
ग्रिड के पहले लोड होने पर ठीक काम करता है, लेकिन ब्राउज़र के आकार बदलने पर ग्रिड का आकार नहीं बदलेगा। आपने उस समस्या से कैसे निपटा, या यह आपके लिए एक आवश्यकता नहीं है?
<script>
$(document).ready(function(){
$(window).on('resize', function() {
jQuery("#grid").setGridWidth($('#fill').width(), false);
jQuery("#grid").setGridHeight($('#fill').height(),true);
}).trigger('resize');
});
</script>