隐藏navgrid按钮取决于jqgrid中的记录数

时间:2016-07-11 17:41:50

标签: jqgrid

如果网格中的记录少于2条,我需要隐藏删除按钮。这是js代码。出于某种原因,标志showDelCurrencyButton在这里不起作用,并且总是错误的。

还有其他办法吗?

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
        }
       });

1 个答案:

答案 0 :(得分:1)

您当前的代码使用data而未指定输入数据的"del_" + grid[0].id参数。这看起来很奇怪。无论如何,您可以隐藏“删除”按钮,通过id动态识别它。在你的情况下它是$("#del_" + grid[0].id).hide();。因此,您可以使用this来隐藏它。顺便说一下,可以在grid[0]内使用loadComplete代替{{1}}。

我建议您阅读the old answer了解更多详情并阅读the answer,其中显示了如何禁用/启用导航按钮(如删除按钮)而不是隐藏。