视图上的jqGrid隐藏列取决于另一个列值
我想根据type
的相应行的单元格值显示列session
。 session
列已隐藏。
要隐藏session
列,我在下面的代码片段中使用了
{ name: 'session', index: 'session', hidden:true, editrules:{edithidden:true} },
所以,我只想在view
显示此列值。 如果type
cell value等于Full
,我想在view
隐藏session
。 否则,我想在view
显示该session
列值。
我尝试使用下面的代码,
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
。 因此,它以Viewforms隐藏session
。 但是当我的第二个if
条件成功时,我无法将该属性更改为true
。
为什么会这样? 这是完成这项任务的正确方法吗? 或者有更好的方法吗?
我建议你使用beforeShowForm
和afterclickPgButtons
回调View选项。 演示演示了它。 演示以下代码:
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"
查看”表单上显示"id"
列,仅在检查“关闭”列中的chechbox时才显示。