我有一个显示在JQGrid中的数据,我得到一个Actions列,其中我有删除和编辑操作的图标。在我检索到的数据显示在网格中,我有一个布尔值,我想只在布尔值为true时才显示图标。怎么可能呢?
这里是我的JQGrid显示的代码:
jQuery("#datagrid").jqGrid({
stateOptions: getStateOptions("creation-site"),
url: listUrl,
datatype: "json",
loadError: viewError,
colNames: ['', 'Nom', 'N de dépôt Geopost', 'IATA', 'Groupe ID', 'Site de rattachement', 'Poste comptable', 'Centre cout', 'Description'],
colModel: [
{name: 'myac', width: 80, fixed: true, sortable: false, resize: false, formatter: 'actions', formatoptions: {keys: true, editbutton: true, }},
{name: 'nom', index: 'nom', editable: true, edittype: "text", sortable: true},
{name: 'geopostDepotNumber', index: 'geopostDepotNumber', editable: true, edittype: "text", sortable: true},
{name: 'iata', index: 'iata', editable: true, edittype: "text", sortable: true},
{name: 'groupeId', index: 'groupeId', editable: true, edittype: "text", sortable: true},
{name: 'siteRattachement', index: 'siteRattachement', editable: true, edittype: "text", sortable: true},
{name: 'posteComptable', index: 'posteComptable', editable: true, edittype: "text", sortable: true},
{name: 'centreCout', index: 'centreCout', editable: true, edittype: "text", sortable: true},
{name: 'description', index: 'description', editable: true, edittype: "text", sortable: true}
],
rowList: [10, 20, 50, 100, 500, 1000, 5000],
pager: '#navGrid',
sortname: 'title',
sortorder: "asc",
viewrecords: true,
loadonce: true,
gridview: true,
ignoreCase: true,
height: 'auto',
editurl: 'clientArray',
caption: '<spring:message code="creationsite.title"/>'
});
编辑:这里有一个样本JSON,有两行:
[{"id":1,"centreCout":"211177","geopostDepotNumber":"0401","iata":"MLV","posteComptable":"77999","referentielId":5,"siteRattachement":" ","nom":"Ceci est un nom","networkRefId":1,"networkRefName":"FR-CHR","description":"MARNE-LA-VALLEE","groupeId":"CHRF","manual":false},
{"id":2,"centreCout":"211174","geopostDepotNumber":"0402","iata":"FTV","posteComptable":"75998","referentielId":5,"siteRattachement":" ","nom":null,"networkRefId":1,"networkRefName":"FR-CHR","description":"ALFORTVILLE","groupeId":"CHRF","manual":false}]
应根据&#34;手册&#34;禁用操作。 JSON中的字段。
编辑:按照我从Oleg的回答中理解的那样,我将其添加到我的网格中:
rowattr: function (rd) {
if (rd.manual === false) { // verify that the testing is correct in your case
return {"class": "not-editable-row"};
}
},
但它仍无法正常工作。
答案 0 :(得分:1)
如果我理解正确,那么在创建网格后或在设置值myac
后直接有条件地隐藏列isReadOnly
就足够了:
if (isReadOnly) {
jQuery("#datagrid").jqGrid("hideCol", "myac");
}
另一个常见的评论。我建议您检查文档the page上Default
列的值。您会看到默认值edittype
和sortable
是“text”和true
值,您将其用于colModel
的所有列。此外,您可以考虑更改colModel
项的默认值cmTemplate
(请参阅the old answer)。还有一点:在使用index
的情况下,name
的值必须与loadonce: true
的值相同。如果没有指定index
,则会自动使用name
属性的值。因此,您可以将代码示例中的colModel
缩减为
colModel: [
{ name: 'myac', width: 80, fixed: true, sortable: false, resize: false,
formatter: 'actions', formatoptions: { keys: true, editbutton: true },
editable: false },
{ name: 'nom' },
{ name: 'geopostDepotNumber' },
{ name: 'iata' },
{ name: 'groupeId' },
{ name: 'siteRattachement' },
{ name: 'posteComptable' },
{ name: 'centreCout' },
{ name: 'description' }
],
cmTemplate: { editable: true }
这样的代码可以更容易阅读和维护。
顺便说一下,如果您知道之前的<{1}} 的值,则可以创建网格
isReadOnly
最后一句话:您使用具有默认值的cmTemplate: { editable: !isReadOnly }
选项。您可以删除该选项。您应该验证sortorder: "asc"
是否正确,因为您没有列sortname: 'title'
。我想这只是一个“剪切和粘贴”的错误。
更新:如果您需要禁用某些行的编辑,可以执行以下操作
'title'
The corresponding demo使用rowattr: function (rowData) {
if (rowData.manual === false) {
return { "class": "not-editable-row" };
}
},
loadComplete: function () {
$(this).find("tr.not-editable-row")
.find(".ui-inline-edit,.ui-inline-del")
.hide();
}
列中的值来禁用编辑。生成的网格如下图所示