jqgrid showLink无法正常工作

时间:2013-04-29 16:39:15

标签: jquery jqgrid

我有格式化工作日期和数字。我的链接格式化器只是出于某种原因中途工作。我进入网格的所有内容都是这样的链接:

?id=1

在URL中未使用(或包含)baseLinkUrl设置的地方。

这是我的JavaScript:

$(function () {
    $("#d5d02a55-ba5e-46f2-a64a-05fd7870b273_list")
        .jqGrid({
        url: '/jqgrid2/getDataJson',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Inv No', 'Date', 'Amount', 'Tax', 'Total', 'Notes'],
        colModel: [{
                "name": "invid",
                "index": "invid",
                "width": 55,
                "formatter": "showlink",
                "formatteroptions": {
                    "baseLinkUrl": "jsp/samplePage.jsp",
                    "target": "_blank",
                    "idName": "invid"
                }
            }, {
                "name": "invdate",
                "index": "invdate",
                "width": 90,
                "formatter": "date",
                "formatteroptions": {
                    "srcformat": "yyyy-MM-dd",
                    "newformat": "MM/dd/yyyy"
                }
            }, {
                "name": "amount",
                "index": "amount",
                "width": 80,
                "align": "RIGHT",
                "formatter": "number",
                "formatteroptions": {
                    "decimalPlaces": 2
                }
            }, {
                "name": "tax",
                "index": "tax",
                "width": 80,
                "align": "RIGHT",
                "formatter": "number",
                "formatteroptions": {
                    "decimalPlaces": 2
                }
            }, {
                "name": "total",
                "index": "total",
                "width": 80,
                "align": "RIGHT",
                "formatter": "number",
                "formatteroptions": {
                    "decimalPlaces": 2
                }
            }, {
                "name": "note",
                "index": "note",
                "width": 150,
                "sortable": false
            }
        ],
        pager: '#d5d02a55-ba5e-46f2-a64a-05fd7870b273_pager',
        rowNum: 5,
        rowList: [5, 10, 25, 50],
        sortname: 'invid',
        sortorder: 'asc',
        viewrecords: true,
        multiselect: false,
        gridview: true,
        caption: '',
        height: 'auto',
        jsonReader: {
            root: 'data',
            page: 'currentPage',
            total: 'totalPages',
            records: 'totalRecords',
            repeatitems: false,
            id: 'id'
        }
    });
});

我的数据:

{ "currentPage" : "1",
  "data" : [ { "amount" : 1000.0,
        "invdate" : "2013-04-01 00:00:00",
        "invid" : 1,
        "note" : "No notes",
        "tax" : 60.0,
        "total" : 1060.0
      },
      { "amount" : 200.0,
        "invdate" : "2013-04-02 00:00:00",
        "invid" : 2,
        "note" : "",
        "tax" : 12.0,
        "total" : 212.0
      },
      { "amount" : 500.0,
        "invdate" : "2013-04-03 00:00:00",
        "invid" : 3,
        "note" : "",
        "tax" : 30.0,
        "total" : 530.0
      },
      { "amount" : 400.0,
        "invdate" : "2013-04-03 00:00:00",
        "invid" : 4,
        "note" : "Some notes",
        "tax" : 24.0,
        "total" : 424.0
      },
      { "amount" : 200.0,
        "invdate" : "2013-04-04 00:00:00",
        "invid" : 5,
        "note" : "",
        "tax" : 12.0,
        "total" : 2012.0
      }
    ],
  "limitRows" : "5",
  "totalPages" : "3",
  "totalRows" : "11"
}

1 个答案:

答案 0 :(得分:1)

返回服务器的数据不包含"id"属性。如果invid列在您的网格中扮演id的角色,您应首先将id: 'id'中的jsonReader更改为id: 'invid'和秒(通常它是另一种选择,但是我建议使用两者)将key: true属性添加到invid列的定义。

下一个重要问题:您使用formatteroptions代替formatoptions。因此,您使用的大多数设置现在都将被忽略。

还有一个问题:您为formatoptions的{​​{1}}使用了错误的值。您需要以PHP格式提供jqGrid数据,而不是例如here中描述的更常见的数据。如果您打开formatter: "date"(请参阅here),您会找到一些使用日期示例和一些可能对您有所帮助的链接。