仅当布尔值为true时,才会在JQGrid中显示操作

时间:2014-11-27 14:12:19

标签: jquery jquery-ui jqgrid

我有一个显示在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"};
            }
        },

但它仍无法正常工作。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么在创建网格后或在设置值myac后直接有条件地隐藏列isReadOnly就足够了:

if (isReadOnly) {
    jQuery("#datagrid").jqGrid("hideCol", "myac");
}

另一个常见的评论。我建议您检查文档the pageDefault列的值。您会看到默认值edittypesortable是“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(); } 列中的值来禁用编辑。生成的网格如下图所示

enter image description here