在jqGrid中遇到onCellSelect设置有问题

时间:2014-05-02 20:44:22

标签: javascript jquery jqgrid

我成功从我的控制器方法中检索数据,并希望在jqGrid上显示数据。

我在调试过程中注意到,我收到一条弹出的错误消息(我没想到)会说" Element不是表"。

在尝试为网格设置 onCellSelect 事件的行上发生错误。它似乎正在尝试读取尚未填充的网格中的数据。

请注意,我在此事件后填充网格。此事件适用于填充网格以从单元格中提取值之后。

但是,我认为所有事件都需要在设计时根据网格的定义进行设置。

有人可以告诉我我在这里做错了吗?

以下是我的相关代码:

$.ajax({
                            url: '@Url.Action("GetFilteredFuelTicketsAsync")',
                            type: "POST",
                            data: JSON.stringify(HH_FuelTkt_Input),
                            contentType: 'application/json; charset=utf-8',
                            dataType: "json",
                            success: function (data) {
                                $('#fuelTickets').jqGrid({
                                    caption: "Fuel Tickets",
                                    colNames: ["ID", "Ticket", "Vehicle", "Customer", "Date", "Image ID"],
                                    colModel: [
                                                { name: "FuelTkt_ID", viewable: false },
                                                { name: "Ticket_No", width: 30, align: "right" },
                                                { name: "Vehicle_No", width: 50 },
                                                { name: "Customer_Name", width: 100 },
                                                { name: "Trans_Timestamp", width: 100, datefmt: "yyyy-mm-dd" },
                                                { name: "Image_ID", width: 30 }
                                    ],
                                    datatype: "json",
                                    mtype: "GET",
                                    pager: true,
                                    sortname: "Ticket_No",
                                    sortorder: "Asc",
                                    viewRecords: true,
                                    gridview: true,
                                    autoWidth: true,
                                    emptyRecords: "No records found",
                                    onCellSelect: function (rowid, iCol, cellcontent) {
                                        var grid = $('#fuelTickets');
                                        var imageID = grid.jqGrid('getCell', rowid, 'Image_ID');
                                        if (imageID != "")
                                            DisplayReceipt(imageID);
                                    }
                                })
                                var grid = $("#fuelTickets");
                                var gridData = JSON.parse(data.d);
                                grid.clearGridData();
                                for (var i = 0; i < gridData.length; i++) {
                                    grid.addRowData(i + 1, gridData[i]);
                                }
                            },
                            error: function (jqXHR, jqXHR, textStatus, errorThrown) {
                                alert("No record found: " + "textStatus: " + textStatus + "\r\n" + "errorThrown: " + errorThrown);
                            }
                        });

在表格元素中放置JQGRID后编辑(修复了当前问题): 这是因为我没有在表格元素中定义jqGrid ...

但是,这里又出现了另一件事。

我在变量&#34; data&#34;中得到两条记录。

当我尝试处理这一行时,没有任何反应。浏览器只是挂起。我是否需要以不同的方式将数据绑定到网格?在解析数据时可能会出现问题,可能是时间戳。你能建议我能做些什么来解决这个问题吗?

非常感谢。 var gridData = JSON.parse(data.d);

json数据如下所示:

数据 [对象{FuelTkt_ID = 2,Ticket_No = 6460193,Vehicle_No =&#34; 123456&#34;,更多...},对象{FuelTkt_ID = 3,Ticket_No = 6460194,Vehicle_No =&#34; 123456&#34;,更多......}

0 对象{FuelTkt_ID = 2,Ticket_No = 6460193,Vehicle_No =&#34; 123456&#34;,更多......}

CUSTOMER_NAME &#34; X&#34;

FuelTkt_ID 2

Image_ID &#34; 12345&#34;

Ticket_No 6460193

Trans_Timestamp &#34; /日期(1395238800000)/&#34;

Vehicle_No &#34; 123456&#34;

1 对象{FuelTkt_ID = 3,Ticket_No = 6460194,Vehicle_No =&#34; 123456&#34;,更多......}

CUSTOMER_NAME &#34; X&#34;

FuelTkt_ID 3

Image_ID &#34; 22856&#34;

Ticket_No 6460194

Trans_Timestamp &#34; /日期(13952.46亿)/&#34;

Vehicle_No &#34; 123456&#34;

1 个答案:

答案 0 :(得分:1)

jqGrid要求您附加的元素为表格:

<table id="fuelTickets"> </table>