JQGrid 自动隐藏单元格中带有 false 的行
JQGrid automatically hide a row with a false in a cell
如果行中的某个单元格具有错误值,我会尝试隐藏该行,到目前为止,我已尝试使用这样的格式化程序:
$("#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 函数工作得很好
另一种方法是使用 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();
}
})
})
})
要自动化,去掉点击功能
最好删除数据,在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 或 "class" 形式:
rowattr: function (item) {
if (item.closed) {
return {"class": "my-hide"};
}
}
参见 another demo。您可以看到这两种解决方案都有效,但页面大小不正确。
如果行中的某个单元格具有错误值,我会尝试隐藏该行,到目前为止,我已尝试使用这样的格式化程序:
$("#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 函数工作得很好
另一种方法是使用 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();
}
})
})
})
要自动化,去掉点击功能
最好删除数据,在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 或 "class" 形式:
rowattr: function (item) {
if (item.closed) {
return {"class": "my-hide"};
}
}
参见 another demo。您可以看到这两种解决方案都有效,但页面大小不正确。