根据 jqgrid 中的记录数隐藏 navgrid 按钮
Hide navgrid buttons depending on the number of records in jqgrid
如果网格中的记录少于 2 条,我需要隐藏删除按钮。这是js代码。出于某种原因,标志 showDelCurrencyButton
在这里不起作用并且始终为 false。
还有其他方法吗?
showDelCurrencyButton = false;
grid.jqGrid({
datatype: 'local',
jsonReader: jqgrid.jsonReader('CurrCd'),
mtype: 'POST',
pager: '#currencyPager',
colNames: ['Abbrev.', 'Name', 'Symbol'],
colModel: [
{
name: 'CurrCd', index: 'CurrCd', width: 200, sortable: false,
editable: true,
edittype: 'select', stype: 'select',
editrules: { required: true },
editoptions: {
dataUrl: getServerPath() + 'Ajax/GetCurrencies',
buildSelect: function (data) {
var currSelector = $("<select id='selCurr' />");
$(currSelector).append($("<option/>").val('').text('---Select Currency---'));
var currs = JSON.parse(data);
$.each(currs, function () {
var text = this.CurName;
var value = this.CurCode;
$(currSelector).append($("<option />").val(value).text(text));
});
return currSelector;
}
}
},
{ name: 'CurrName', index: 'CurrName', width: 200, sortable: false },
{ name: 'CurrSymbol', index: 'CurrSymbol', width: 200, sortable: false },
],
loadtext: 'Loading...',
caption: "Available Currencies",
scroll: true,
hidegrid: false,
height: 116,
width: 650,
rowNum: 1000,
altRows: true,
altclass: 'gridAltRowClass',
onSelectRow: webview.legalentities.billing.onCurrencySelected,
loadComplete: function (data) {
if (data.length > 1) {
showDelCurrencyButton = true;
}
var rowIds = $('#currencyGrid').jqGrid('getDataIDs');
$("#currencyGrid").jqGrid('setSelection', rowIds[0]);
},
rowNum: 1000
});
grid.jqGrid('navGrid', '#currencyPager', {
edit: false,
del: (showDelCurrencyButton == true),
deltitle: 'Delete record',
search: false,
refresh: false
}
});
您当前的代码使用了 datatype: 'local'
而没有为输入数据指定 data
参数。这似乎很奇怪。您可以通过任何方式隐藏通过 id 动态识别的删除按钮。在你的情况下是 "del_" + grid[0].id
。因此你可以使用 $("#del_" + grid[0].id).hide();
来隐藏它。顺便说一句,可以在 loadComplete
.
中使用 this
而不是 grid[0]
我建议您阅读 the old answer for more details and to read the answer,它展示了如何 disable/enable 导航器按钮(如删除按钮)而不是隐藏。
如果网格中的记录少于 2 条,我需要隐藏删除按钮。这是js代码。出于某种原因,标志 showDelCurrencyButton
在这里不起作用并且始终为 false。
还有其他方法吗?
showDelCurrencyButton = false;
grid.jqGrid({
datatype: 'local',
jsonReader: jqgrid.jsonReader('CurrCd'),
mtype: 'POST',
pager: '#currencyPager',
colNames: ['Abbrev.', 'Name', 'Symbol'],
colModel: [
{
name: 'CurrCd', index: 'CurrCd', width: 200, sortable: false,
editable: true,
edittype: 'select', stype: 'select',
editrules: { required: true },
editoptions: {
dataUrl: getServerPath() + 'Ajax/GetCurrencies',
buildSelect: function (data) {
var currSelector = $("<select id='selCurr' />");
$(currSelector).append($("<option/>").val('').text('---Select Currency---'));
var currs = JSON.parse(data);
$.each(currs, function () {
var text = this.CurName;
var value = this.CurCode;
$(currSelector).append($("<option />").val(value).text(text));
});
return currSelector;
}
}
},
{ name: 'CurrName', index: 'CurrName', width: 200, sortable: false },
{ name: 'CurrSymbol', index: 'CurrSymbol', width: 200, sortable: false },
],
loadtext: 'Loading...',
caption: "Available Currencies",
scroll: true,
hidegrid: false,
height: 116,
width: 650,
rowNum: 1000,
altRows: true,
altclass: 'gridAltRowClass',
onSelectRow: webview.legalentities.billing.onCurrencySelected,
loadComplete: function (data) {
if (data.length > 1) {
showDelCurrencyButton = true;
}
var rowIds = $('#currencyGrid').jqGrid('getDataIDs');
$("#currencyGrid").jqGrid('setSelection', rowIds[0]);
},
rowNum: 1000
});
grid.jqGrid('navGrid', '#currencyPager', {
edit: false,
del: (showDelCurrencyButton == true),
deltitle: 'Delete record',
search: false,
refresh: false
}
});
您当前的代码使用了 datatype: 'local'
而没有为输入数据指定 data
参数。这似乎很奇怪。您可以通过任何方式隐藏通过 id 动态识别的删除按钮。在你的情况下是 "del_" + grid[0].id
。因此你可以使用 $("#del_" + grid[0].id).hide();
来隐藏它。顺便说一句,可以在 loadComplete
.
this
而不是 grid[0]
我建议您阅读 the old answer for more details and to read the answer,它展示了如何 disable/enable 导航器按钮(如删除按钮)而不是隐藏。