【问题标题】:JQGrid automatically hide a row with a false in a cellJQGrid 自动隐藏单元格中带有 false 的行
【发布时间】:2016-02-09 17:04:01
【问题描述】:

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

$("#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"

        })

我关心的格式化程序是mostra,如果disponibilita为false,它必须隐藏行!

function mostra (cellvalue, options, rowObject)
{               

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

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

【问题讨论】:

  • 你打算下次删除像your previous question这样的问题吗?当前的问题没有描述您使用哪个版本的 jqGrid 以及来自哪个 fork(free jqGridGuriddo jqGrid JS 或版本 之前 的数据项,但解决方案取决于您使用的 datatyperowattr 的用法是可选的
  • 1) 我删除了这个问题,因为我没有看到任何答案,而且我的问题首先是错误的 2) 我按照你的建议使用了 rowattr,在课堂上我尝试使用 .ui 隐藏该行-widget-content .rowClass { display:"none"; } 但它并没有隐藏它,它是否有特定的命令来隐藏它?
  • 没关系,应该是 display: none;......
  • 对不起,我还是不知道你用的是哪个datatype,你用的是哪个版本的jqGrid。首选方法是从数据中删除项目而不是隐藏它,但必须知道所请求的信息。如果您确实使用rowattr,那么您应该发布您尝试过但不起作用的代码。因为我没有其他信息,所以我向您展示了如何在我的回答中正确使用 rowattr

标签: javascript jquery jqgrid


【解决方案1】:

最好删除数据,在disponibilita之前false值的数据将被jqGrid处理。在datatype: "local" 的情况下,只需修改输入数据,然后使用data 参数修改输入。如果从服务器加载数据,可以使用beforeProcessing回调来修改从服务器返回的数据。

只有当你因为一些额外的原因而无法实现上述场景时,才可以使用rowattr回调,形式如下

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

参见the demo 或“类”形式:

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

another demo。您可以看到这两种解决方案都有效,但页面大小不正确。

【讨论】:

    【解决方案2】:

    另一种方法是使用 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();
            }
         })
    
    })
    
    })
    

    Demo

    为了自动化它取出点击功能

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 2021-02-18
      • 1970-01-01
      相关资源
      最近更新 更多