我想根据session
的相应行的单元格值显示列type
。已隐藏session
列。
要隐藏session
列,我在下面的代码段中使用了
{ name: 'session', index: 'session', hidden:true, editrules:{edithidden:true} },
所以,我只想在view
中显示此列值。如果type
单元格值等于Full
,我想隐藏session
中的view
。否则,我想在session
中显示view
列值。
我尝试使用以下代码,
onSelectRow: function (id) {
var celValue = $('#statGrid').jqGrid('getCell', id, 'type');
if (celValue === 'Full') $('#statGrid').jqGrid('getColProp', 'session').editrules.edithidden = false;
if (celValue === 'Half') $('#statGrid').jqGrid('getColProp', 'session').editrules.edithidden = true;
}
一次,首先if
条件成功edithidden
属性更改为false
。因此,它在视图表单中隐藏session
。但是当我的第二个true
条件成功时,我无法将该属性更改为if
。
为什么会这样?这是完成这项任务的正确方法吗?或者有更好的方法吗?
答案 0 :(得分:1)
我建议您使用View选项的beforeShowForm
和afterclickPgButtons
回调。 The demo证明了这一点。演示了以下代码:
var showIdRow = function ($form) {
var $this = $(this),
rowid = $this.jqGrid("getGridParam", "selrow"),
isClosed = $this.jqGrid("getCell", rowid, "closed");
if (isClosed === "Yes") {
$("#trv_id").show(); // "trv_" is the prefix, "id" is the column name
}
};
$("#list").jqGrid({
....
colModel: [
{ name: "id", width: 65, hidden: true, editrules: {edithidden: false} },
...
]
...
}).jqGrid("navGrid", "#pager", {view: true}, {}, {}, {}, {}, {
recreateForm: true,
afterclickPgButtons: showIdRow,
beforeShowForm: showIdRow
});
该演示仅在“查看”表单上显示"id"
列,仅在选中“关闭”列中的chechbox时才会显示。