在jqgrid中,我只有在特定列具有給定值時纔可編輯列,是否可以在添加/編輯表單上顯示/隱藏這些列基於該列(選擇)值?jqgrid基於其他列值隱藏編輯表單上的列
我已經通過了aftershowform函數,有沒有其他方法可以做到這一點? 使用aftershowform首先顯示所有字段,然後用醜陋的渲染效果隱藏。
在jqgrid中,我只有在特定列具有給定值時纔可編輯列,是否可以在添加/編輯表單上顯示/隱藏這些列基於該列(選擇)值?jqgrid基於其他列值隱藏編輯表單上的列
我已經通過了aftershowform函數,有沒有其他方法可以做到這一點? 使用aftershowform首先顯示所有字段,然後用醜陋的渲染效果隱藏。
您可以隱藏/顯示beforeShowForm
或afterShowForm
回調內的任何可編輯列。重要的是要明白,jqGrid填寫表格所有可編輯列。該表格包含行。每行都有根據可編輯列的name
生成的標識。行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」是隱藏元素的id,它將被jqGrid放置在每個編輯表單中。或者您可以使用
var rowid = $(this).jqGrid("getGridParam", "selrow");
因爲selrow
值也包含在當前編輯行的ROWID。
要在隱藏/顯示行之前測試另一列的內容,您可以使用getCell
。如果使用datatype: "local"
(或使用loadonce: true
),則可以使用getLocalRow
方法獲得具有全行數據的對象。