Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqGrid setCell函数第五参数和编辑模式_Javascript_Jqgrid - Fatal编程技术网

Javascript jqGrid setCell函数第五参数和编辑模式

Javascript jqGrid setCell函数第五参数和编辑模式,javascript,jqgrid,Javascript,Jqgrid,我有一个jqGrid,我希望所有的行都处于编辑模式。但是,在某些条件下,我希望该行中的单元格基于行数据的某些条件为只读,但我似乎无法使网格按我的意愿弯曲(目前) 这就是我现在拥有的 $(grid).addRowData(...); // omitted for clarity $(grid).jqGrid('editRow',rowid); if (someCondition){ $(grid).setCell(rowid, 'col1', '', '', {editable: fa

我有一个jqGrid,我希望所有的行都处于编辑模式。但是,在某些条件下,我希望该行中的单元格基于行数据的某些条件为只读,但我似乎无法使网格按我的意愿弯曲(目前)

这就是我现在拥有的

$(grid).addRowData(...);  // omitted for clarity
$(grid).jqGrid('editRow',rowid);
if (someCondition){
     $(grid).setCell(rowid, 'col1', '', '', {editable: false});
}
正如我所希望的,该行被添加并进入编辑模式,但是当调用setCell()时,它似乎不会影响单元格


知道我做错了什么吗?

在调用
editRow
方法之前,应该尝试修改单元格的属性

此外,我只知道行的
editable
属性,该行可以是“1”或“0”,类也可以是“noteditable row”。单元格的
可编辑属性是否存在

有一种方法可以奏效。在调用
editRow
方法之前,可以修改
colModel
中列的
editable
属性,并在调用
editRow
之后将其重置为原始状态。有关如何在
colModel
中进行动态修改的示例,请参见


已更新:如果已经使用自定义格式化程序,也可以将其包含在代码中。这里有一个例子。自定义格式设置程序将仅用于显示网格中的数据,但如果行处于编辑模式,则会显示自定义元素和自定义值。

网格已对其他列使用列格式设置程序,因此我决定采用该方法。我无法让它不使用Oleg描述的方法将整个列更改为只读/可编辑。我还决定将只读状态存储为网格单元值的一部分

colModel:

{ name: 'ARNumber', width: 70, editable: false, sortable: false, formatter: 'optionalReadonlyInputCellFormatter'},
设置我的格式化程序/未格式化文件:

$.extend($.fn.fmatter, {
    optionalReadonlyInputCellFormatter: formatOptionalReadonlyInputCell
});

$.extend($.fn.fmatter.optionalReadonlyInputCellFormatter, {
    unformat: unformatOptionalReadonlyInputCell
});
格式化程序/非格式化程序函数:

function formatOptionalReadonlyInputCell(cellvalue, options, rowdata) {
    var readonly = cellvalue === undefined;
    if (readonly)
        return displayARNumberInput('');

    vals = cellvalue.split(",");
    var cellValue = vals[0];
    var readonly = !(vals[1] === undefined) || vals[1] == 1;

    if (readonly) {
        return displayARNumberSpan(cellValue);
    }
    else {
       return displayARNumberInput(cellValue);
    }
}

function unformatOptionalReadonlyInputCell(cellvalue, options, cellobject) {
    var readonly = (cellvalue == "") ? "0" : "1";
    if (readonly == "1") {
        return cellvalue + "," + readonly;
    }
    else {
        return $(cellobject).children().val() + "," + readonly;
    }
}

function displayARNumberInput(value) {
    var element = document.createElement("input");
    element.type = "text";
    element.value = value;
    return element.outerHTML;
}

function displayARNumberSpan(value) {
    var element = document.createElement("span");
    element.innerText = value;
    return element.outerHTML;
}