根据 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 导航器按钮(如删除按钮)而不是隐藏。