jqgrid根据其他列值隐藏编辑表单上的列

时间:2014-07-22 13:35:53

标签: jquery jqgrid

在jqgrid中,我的列只有在某个列具有给定值时才可编辑,是否可以根据该列(select)值在添加/编辑表单中显示/隐藏这些列?

我已经通过aftershowform功能,有没有其他方法可以做到这一点? 使用aftershowform首先显示所有字段,然后使用丑陋的渲染效果隐藏它。

1 个答案:

答案 0 :(得分:2)

您可以在beforeShowFormafterShowForm回调中隐藏/显示任何可修改的列。了解jqGrid使用所有可编辑列填充表单非常重要。表单包含行。每行都有基于可编辑列的name构建的id。行ID具有"tr_"前缀,该前缀附加到列名称(name中的colModel属性的值)。因此,如果您需要隐藏具有name: "Name"的列,则可以执行

beforeShowForm: function ($form) { $form.find("#tr_Name").hide(); }

或只是

beforeShowForm: function () { $("#tr_Name").hide(); }

(见the answer)。

要获取当前正在编辑的rowid,您可以使用

var rowid = $form.find("#id_g").val();

var rowid = $("#id_g").val();

(见the answer)。奇怪的id值" id_g"是jqGrid在每个编辑表单中放置的隐藏元素的id。或者你可以使用

var rowid = $(this).jqGrid("getGridParam", "selrow");

因为selrow的值也包含当前编辑行的rowid。

要在隐藏/显示行之前测试另一列的内容,您可以使用getCell。如果是datatype: "local"(或者在使用loadonce: true的情况下),您可以使用getLocalRow方法获取包含完整行数据的对象。