簡體   English   中英

防止以內聯編輯模式編輯特定的可編輯行的單元格

[英]Prevent editing of a specific editable row's cell in inline-edit mode

在jqGrid中,我正在以內聯編輯模式工作。

當用戶嘗試編輯一行(單擊筆操作圖標)時,我想阻止( {editable: false} )根據此行中另一個單元格的內容編輯特定的可編輯行的單元格。

grid.setColProp('myColumn',{editable:false}); 對我不好,因為這會禁用所有網格行中'myColumn'的編輯,我只想在當前編輯的行上應用它

editable屬性的值對於所有行都是通用的,但該值僅由初始化內聯編輯的editRow方法使用。 因此,您可以相對於setColProp動態更改editable屬性的值(如答案中所示 )。 在每次調用editRow之前設置正確的editable屬性值非常重要。 答案中,您可以看到相應的代碼示例和演示。

更新 :如果您使用formatter: "actions"那么您可以“子類化” onclick處理程序中調用的$.fn.fmatter.rowactions 您可以在下面看到相應代碼的示例

var orgRowActions = $.fn.fmatter.rowactions;
$.fn.fmatter.rowactions = function (rid, gid, act, pos) {
    var $grid = $("#" + $.jgrid.jqID(gid)),
        rowData = $grid.jqGrid("getLocalRow", rid),
        isNonEditable = false,
        result;
    // we can test any condition and change
    // editable property of any column
    if (act === "edit" && parseFloat(String(rowData.tax)) <= 20) {
        $grid.jqGrid("setColProp", "note", {editable: false});
        isNonEditable = true;
    }
    result = orgRowActions.call(this, rid, gid, act, pos);
    if (isNonEditable) {
        // reset the setting to original state
        $grid.jqGrid("setColProp", "note", {editable: true});
    }
    return result;
}

你會在這里找到相應的演示。 僅當“tax”列中的值<= 20時,“note”列才可在演示中編輯:

在此輸入圖像描述

如果你有datatype: "json"datatype: "xml"而不使用loadonce: true你應該將getLocalRow的調用替換為上面代碼中getRowDatagetCell的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM