在jqgrid中,我的列只有在某个列具有给定值时才可编辑,是否可以根据该列(select)值在添加/编辑表单中显示/隐藏这些列?
我已经通过aftershowform功能,有没有其他方法可以做到这一点? 使用aftershowform首先显示所有字段,然后使用丑陋的渲染效果隐藏它。
答案 0 :(得分:2)
您可以在beforeShowForm
或afterShowForm
回调中隐藏/显示任何可修改的列。了解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
方法获取包含完整行数据的对象。