我在这里看到了以下带有冻结列和过滤器工具栏的演示: http://www.ok-soft-gmbh.com/jqGrid/FrozenColumns.htm
现在,对于相同的示例,我想实现在演示中可用的切换功能: http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithSearchingToolbar1.htm
我尝试了但它无法正常工作..有人可以创建一个同时具有冻结列和切换过滤器工具栏的演示吗?
我尝试从github下载最新的jqgrid代码,并尝试按如下方式复制演示(正如你所说,问题已修复,我认为不需要冻结,在演示中的fixGBoxHeight函数你已经向我展示了{{{ 3}})
$grid.jqGrid({
datatype: 'local',
data: mydata,
colNames: [/*'Id', */'Client', 'Date', 'Amount', 'Tax', 'Total', 'Closed', 'Shipped via', 'Notes'],
colModel: [
//{name: 'id', index: 'id', width: 45, align: 'center', sorttype: 'int', frozen: true},
{name: 'name', index: 'name', width: 70, editable: true, frozen: true},
{name: 'invdate', index: 'invdate', width: 80, align: 'center', sorttype: 'date',
formatter: 'date', formatoptions: {newformat: 'm/d/Y'}, datefmt: 'm/d/Y'},
{name: 'amount', index: 'amount', width: 75, formatter: 'number', align: 'right', editable: true},
{name: 'tax', index: 'tax', width: 50, formatter: 'number',
formatoptions: {decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000'},
align: 'right', editable: true, editoptions: {readonly: true}},
{name: 'total', index: 'total', width: 60, formatter: 'number', align: 'right', editable: true},
{name: 'closed', index: 'closed', width: 70, align: 'center', editable: true,
formatter: 'checkbox', edittype: 'checkbox', editoptions: {value: 'Yes:No', defaultValue: 'Yes'}},
{name: 'ship_via', index: 'ship_via', width: 100, align: 'center', formatter: 'select', editable: true,
edittype: 'select', editoptions: {value: 'FE:FedEx;TN:TNT;IN:Intim', defaultValue: 'Intime'}},
{name: 'note', index: 'note', width: 70, sortable: false, editable: true}
],
rowNum: 10,
rowList: [5, 10, 20],
pager: '#pager',
gridview: true,
rownumbers: true,
sortname: 'invdate',
viewrecords: true,
sortorder: 'desc',
caption: 'Frozen columns with dynamic shown filter toolbar',
height: '100%',
shrinkToFit: false,
width: 550,
resizeStop: function () {
/*resizeColumnHeader.call(this);
fixPositionsOfFrozenDivs.call(this);
fixGboxHeight.call(this);*/
},
loadComplete: function () {
//fixPositionsOfFrozenDivs.call(this);
}
});
$grid.jqGrid('navGrid', '#pager', {add: false, edit: false, del: false}, {}, {}, {},
{multipleSearch: true, overlay: 0});
$grid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch: 'cn'});
$grid.jqGrid('navButtonAdd', '#pager', {
caption: "Filter",
title: "Toggle Searching Toolbar",
buttonicon: 'ui-icon-pin-s',
onClickButton: function () {
this.toggleToolbar();
/*if ($.isFunction(this.p._complete)) {
if ($('.ui-search-toolbar', this.grid.hDiv).is(':visible')) {
$('.ui-search-toolbar', this.grid.fhDiv).show();
} else {
$('.ui-search-toolbar', this.grid.fhDiv).hide();
}
this.p._complete.call(this);
fixPositionsOfFrozenDivs.call(this);
}*/
}
});
$grid[0].toggleToolbar();
/*$grid.jqGrid('gridResize', {
minWidth: 450,
stop: function () {
fixPositionsOfFrozenDivs.call($grid[0]);
fixGboxHeight.call($grid[0]);
}
});
resizeColumnHeader.call($grid);*/
$grid.jqGrid('setFrozenColumns');
/*$grid.p._complete.call($grid);
fixPositionsOfFrozenDivs.call($grid);*/
});
但是代码仍无效,filtertoolbar不能像以前的演示一样工作(http://www.ok-soft-gmbh.com/jqGrid/FrozenColumnsAndFilterToggle.htm)
答案 0 :(得分:4)
首先,我建议您使用the demo中的the answer作为基础,而不是the demo中的the previous answer。
你是对的。冻结列的当前实现具有动态显示或隐藏搜索工具栏的问题。我将其解释为toggleToolbar中的错误。
直到错误未修复我建议您手动在网格的冻结部分显示或隐藏工具栏。 The demo显示了如何实现这一点。您在下面找到的演示代码中最重要的部分:
$grid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch: 'cn'});
$grid.jqGrid('navButtonAdd', '#pager', {
caption: "Filter",
title: "Toggle Searching Toolbar",
buttonicon: 'ui-icon-pin-s',
onClickButton: function () {
this.toggleToolbar();
if ($.isFunction(this.p._complete)) {
if ($('.ui-search-toolbar', this.grid.hDiv).is(':visible')) {
$('.ui-search-toolbar', this.grid.fhDiv).show();
} else {
$('.ui-search-toolbar', this.grid.fhDiv).hide();
}
this.p._complete.call(this);
fixPositionsOfFrozenDivs.call(this);
}
}
});
$grid[0].toggleToolbar();