我正在寻找一种方法来禁用jPGrid行的编辑,其中isPosted列的值为true。
使用动作格式化程序或双击行的表单和内联编辑。 需要禁用所有类型的编辑。 我在jqGrid loadcomplete中尝试了下面的代码。
这不会禁用表单编辑。此外,双击已发布的行显示保存和取消按钮(所有列均处于只读模式)。
如何禁用已发布行的所有行编辑? jqGrid是从远程jqson数据填充的。
loadCompete: function () {
var
postedCol = getColumnIndexByName($grid, 'isPosted'),
cRows = $grid[0].rows.length,
iRow,
row,
className,
isPosted,
cm = $grid.jqGrid('getGridParam', 'colModel'),
l,
iActionsCol = getColumnIndexByName($grid, '_actions');
l = cm.length;
for (iRow = 0; iRow < cRows; iRow = iRow + 1) {
row = $grid[0].rows[iRow];
className = row.className;
isPosted = false;
if ($.inArray('jqgrow', className.split(' ')) > 0) {
isPosted = $(row.cells[postedCol]).find(">div>input:checked").length > 0;
if (isPosted) {
if ($.inArray('jqgrid-postedrow', className.split(' ')) === -1) {
// todo: how to disable row editing and inline edit actions buttons.
// why those two lines do not disable
row.className = className + ' jqgrid-postedrow not-editable-row';
$(row.cells[iActionsCol]).attr('editable', '0');
$(row.cells[iActionsCol]).find(">div>div.ui-inline-del").hide();
$(row.cells[iActionsCol]).find(">div>div.ui-inline-edit").hide();
}
}
}
}
css file:
.jqgrid-postedrow
{
background-color: #FFFFD0;
background-image: none;
}
答案 0 :(得分:0)
@Andrus,你可以检查关于isPosted值的gridComplete或LoadComplete,如果是真的,只需使用jquery隐藏编辑按钮,你可以使用开发者工具获取这些按钮的id吗?
我有一个类似的要求,在某些行中我必须显示编辑按钮,在某些行中我必须根据jqgrid中的数据隐藏它们。
所以我使用开发人员工具得到了这些按钮的id,在loadComlete中我检查了所有行的值并隐藏了按钮。我认为这也可以为你效劳。并讨论onSelectRow或onDblClickRow检查isPosted的值,如果是真的,你应该从你的函数返回false,否则用这样的东西进行正常编辑
jQuery(“#grid_id”)。editRow(id,properties);