JQGrid 会自动隐藏单元格中带有 false 的行

JQGrid automatically hide a row with a false in a cell

本文关键字:false 的行 单元格 隐藏 JQGrid      更新时间:2023-09-26

如果其中的单元格具有 false 值,我正在尝试隐藏行,到目前为止,我已经尝试使用这样的格式化程序:

$("#list").jqGrid({
            //datatype: 'clientSide',
            colNames: ["Id", "Descrizione", "Data Vendita", "Disabilitato", "PISTA", 
                       "Piano Tariffario", "Data Validità Piano Tariffario", 
                       "PROMO", "Data Validità Promo", "CANONE CLIENTE NETTO MESE", 
                       "Vendibile", "Migrato"],
            colModel: [
                { name: "id"},
                { name: "descrizione", editable: true},
                { name: "dataInizVendita", editable: true, formatter:vendita},                          
                { name: "disabilitato", editable: true},
                { name: "pista", editable: true},
                { name: "pianoTariffario", editable: true},
                { name: "dataInizPiano", editable: true, formatter:piano},              
                { name: "promo", editable: true},
                { name: "dataInizPromo", editable: true, formatter:promo},
                { name: "canoneNetto", editable: true},
                { name: "disponibilita", editable: true, formatter:mostra},
                { name: "migrato", editable: true, width:150, sortable: false, resizable:false, formatter:bottone}          
            ],
            formatter: 'date', 
            formatoptions: { srcformat: 'd/m/Y', newformat: 'd/m/Y'},
            sortname: "id",
            sortorder: "asc"
        })

我关心的格式化程序是莫斯特拉,如果disponibilita是假的,它必须隐藏行!

function mostra (cellvalue, options, rowObject)
{               
    if(rowObject.disponibilita == false)
    {               
        $("#"+rowObject.id).hide();
    }
    $("#list").trigger("reloadGrid");
    return rowObject.disponibilita;
}

我也尝试过使用 delRowdata,但它没有删除它,它可以看到什么时候是假的,什么时候不是,因为 if 函数工作得很好

最好删除数据,这些数据在 jqGrid 处理数据之前disponibilita列中具有false值。在datatype: "local"的情况下,应该只修改输入数据,然后使用data参数来修改输入。在从服务器加载数据的情况下,可以使用beforeProcessing回调来修改从服务器返回的数据。

只有当由于一些其他原因无法实现上述场景时,才能使用以下形式的rowattr回调

rowattr: function (item) { // !rowObject.disponibilita in your case
    if (item.closed) {
        return {style: "display:none;"};
    }
}

查看演示或以"类"形式:

rowattr: function (item) {
    if (item.closed) {
        return {"class": "my-hide"};
    }
}

查看另一个演示。您可以看到两种解决方案都有效,但页面大小不正确。

另一种方法是使用 each 函数扫描 tr 和 td 数据,并在 false 时隐藏

$('.hidefalse').click(function() {
$("#grid tr").each(function () {
var thisrow = $(this);
    $('td', this).each(function () {
        var value = $(this).text();
        if (value == 'false') {
            $(thisrow).fadeOut();
        }
     })
})
})

演示

要自动化它,请取出点击功能

演示