2014-07-22 54 views
0

在jqgrid中,我只有在特定列具有給定值時纔可編輯列,是否可以在添加/編輯表單上顯示/隱藏這些列基於該列(選擇)值?jqgrid基於其他列值隱藏編輯表單上的列

我已經通過了aftershowform函數,有沒有其他方法可以做到這一點? 使用aftershowform首先顯示所有字段,然後用醜陋的渲染效果隱藏。

回答

2

您可以隱藏/顯示beforeShowFormafterShowForm回調內的任何可編輯列。重要的是要明白,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方法獲得具有全行數據的對象。