【发布时间】:2016-05-13 21:18:07
【问题描述】:
嗨,我有以下代码,它使用 jqgrid 显示表格。但是,我注意到 jqGrid 都没有响应。
如何让现有的 jqGrid 响应平板电脑和智能手机
更新
我已使用以下内容更新了我的代码
$(window).on("resize", function () {
var newWidth = $("#loanGrid").closest(".ui-jqgrid").parent().width();
$("#loanGrid").jqGrid("setGridWidth", newWidth, true);
});
响应性有效但不完全。
这是下面的代码和fiddle 这里 HTML
<div class="container-fluid">
<div class="row">
<div class="col-md-11">
<h3 class="subheader"> Sample Info </h4>
<div class="redmond">
<table id="output"></table>
</div>
</div>
</div>
</div>
jqGrid JavaScript
$("#output").jqGrid({
url: jsonData,
mtype: "GET",
datatype: "json",
/* postData: {
json: JSON.stringify(data)
},
*/
colModel: [
/** { name: 'ClientID', label:'ClientID',width: 80, key: true },****/
{
name: 'Symbol',
label: 'Symbol',
align: 'left',
width: 65
}, {
name: 'Description',
label: 'Description',
align: 'left',
width: 165
}, {
name: 'ShareQuantity',
label: 'ShareQuantity',
align: 'right',
width: "85",
formatter: 'currency',
formatoptions: {
prefix: " ",
suffix: " "
}
}, {
name: 'SharePrice',
label: 'Share Price',
align: 'right',
width: 100,
template: "number",
formatoptions: {
prefix: " $",
decimalPlaces: 4
}
},
/*{ label: 'Value1',
name: 'Value1',
width: 80,
sorttype: 'number',
formatter: 'number',
align: 'right'
}, */
{
name: 'TotalValue',
label: 'Total Value',
width: 160,
sorttype: 'number',
align: "right",
formatter: 'currency',
formatoptions: {
prefix: " $",
suffix: " "
}
}, {
name: 'LTVRatio',
label: 'LTV Ratio',
width: 70,
sorttype: 'number',
align: "right",
formatter: 'percentage',
formatoptions: {
prefix: " ",
suffix: " "
}
}, {
name: 'LTVCategory',
label: 'LTV Category',
width: 120,
width: 165
},
{
name: 'MaxLoanAmt',
label: 'MaxLoanAmount',
width: 165,
sorttype: 'number',
align: "right",
formatter: 'currency',
formatoptions: {
prefix: " $",
suffix: " "
}
}
],
additionalProperties: ["Num1"],
/*beforeProcessing: function (data) {
var item, i, n = data.length;
for (i = 0; i < n; i++) {
item = data[i];
item.Quantity = parseFloat($.trim(item.Quantity).replace(",", ""));
item.LTVRatio = parseFloat($.trim(item.LTVRatio *10000).replace(",", ""));
item.Value = parseFloat($.trim(item.Value).replace(",", ""));
item.Num1 = parseInt($.trim(item.Num1).replace(",", ""), 10);
item.Num2 = parseInt($.trim(item.Num2).replace(",", ""), 10);
}
}, */
iconSet: "fontAwesome",
loadonce: true,
rownumbers: true,
cmTemplate: {
autoResizable: true,
editable: true
},
autoResizing: {
compact: true
},
forceClientSorting: true,
sortname: "Symbol",
footerrow: true,
caption: "<b>Collateral Value</b> <span class='pull-right' style='margin-right:20px;'>Valuation as of: " + mmddyyyy + "</span>",
loadComplete: function() {
var $self = $(this),
sum = $self.jqGrid("getCol", "Price", false, "sum"),
sum1 = $self.jqGrid("getCol", "MaxLoanAmt", false, "sum");
//ltvratio = $self.jqGrid("getCol","LTVRatio:addas", "Aved Loan Amount");
$self.jqGrid("footerData", "set", {
LTVCategory: "Max Approved Loan Amount:",
Price: sum,
MaxLoanAmt: sum1
});
}
});
//jQuery("#loanGrid").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, defaultSearch: "cn" });
});
【问题讨论】:
-
您需要包含调整网格大小的代码(类似于
$(window).bind("resize", ...))。参见jsfiddle.net/OlegKi/andm1299/45 或jsfiddle.net/OlegKi/andm1299/46 和the answer、this one、this one 和其他一些 -
@Oleg- 谢谢。我按照示例添加了以下代码,它现在可以响应,但不完全。例如,在屏幕尺寸达到 778 像素后,响应能力就会崩溃。我怎样才能让它工作?我错过了什么?我跟着你的例子http://jsfiddle.net/ejpn9/4/ 这是我的小提琴jsfiddle.net/dev2020/w7pxts0z/3
-
为什么你一直在发布那些不起作用的演示?您可以修改我的演示并包含您的代码和数据以进行工作演示。如果您需要从
url加载数据,那么您可以使用jsfiddle 的Echo 服务:您只需使用url: '/echo/json/'并将JSON 数据作为json参数发送。在 jqGrid 的情况下,它意味着url: '/echo/json/', mtype: "POST", datatype: "json", postData: { json: JSON.stringify(jsonData) }的使用。请参阅jsfiddle.net/OlegKi/w7pxts0z/5您到底想修复什么? -
您应该描述在调整大小时需要实现的哪些响应行为。例如,可以调整所有列的大小,可以调整特定列的大小,或者如果网格大小(外部容器的大小)小于某个值,可以隐藏某些列。例如,您可以在某些列中添加
classes: "hidden-xs", labelClasses: "hidden-xs"以隐藏宽度jsfiddle.net/OlegKi/w7pxts0z/6 请参阅here 其他可以使用的类 -
@Oleg - 谢谢。我试图调整所有列的大小
标签: javascript jqgrid free-jqgrid