jqgrid:getCell总是返回false

时间:2017-09-27 18:32:40

标签: jquery jqgrid

我目前正在开展一个涉及从jqgrid的特定列中获取值的项目。我被告知你应该使用' getCell'为此,它总是返回false,而不是给我一个值。谁能帮我解决这个问题?我渲染JqGrid的代码如下:

RenderGrid: function () {
            var $deft = $("#MyGrid");
            $("#MyGrid").jqGrid({
                datatype: "local",
                editurl: "<%=Session("BaseUri")%>" + '/path/to/irrelevant/helper/page',
                colNames: ['Actions', 'ButtonId', 'DefectCode', 'Name', ],
                colModel: [
                    { name: 'act', index: 'act', width: 100, sortable: false },
                    { name: 'ButtonId', index: 'ButtonId', editable: false, width:50 },
                    { name: 'DefectCode', index: 'DefectCode', editable: true, width: 50 },
                    { name: 'Name', index: 'Name', sortable: false, width: 200, editable: true }



                ],
                pager: '#pMyGrid',
                caption: "McGriddles",
                multiselect: false,
                loadonce: false,
                rowNum: 10,
                viewrecords: true,
                sortorder: "desc",
                width: new Number(300),
                gridview: true,
                height: "100%",
                data: ButtonLibrary,

                ondblClickRow: function (id) {
                    if (id && id !== lastSel) {
                        jQuery("#MyGrid").restoreRow(lastSel);
                        lastSel = id;
                    }
                    jQuery("#MyGrid").editRow(id, true);

                },
                gridComplete: function () {

                    var ids = jQuery("#MyGrid").jqGrid('getDataIDs');
                    for (var i = 0; i < ids.length; i++) {
                        var cl = ids[i];
                        be = "<input style='height:22px;width:20px;' type='button' value='E' onclick=\"jQuery('#MyGrid').editRow('" + cl + "');\"  />";
                        se = "<input style='height:22px;width:20px;' type='button' value='S' onclick=\"jQuery('#MyGrid').saveRow('" + cl + "');\"  />";
                        var ButtonId = $('#MyGrid').jqGrid('getCell', ids[i], 'ButtonId');


//------------->         console.log(ButtonId); //always returns false
                            GBDelete = "<input style='height:22px;width:20px;' type='button' value='X' onclick=\"DeleteRowData('" + cl + "');\"  />";
                        jQuery("#MyGrid").jqGrid('setRowData', ids[i], { act: be + se + GBDelete });
                    }
                }

            });


        },


        };

1 个答案:

答案 0 :(得分:1)

getCell在两种情况下返回false: 1.如果在colModel中找不到列名,或者 2.无法找到行ID

为此目的,最好从响应中获取一列或数据,作为id。

在你的情况下使用本地数据时,最好在colModel数组中设置set key:true,以便正常工作。

我的建议是建立一个将作为id的列(确定它具有唯一值),这应该设置为key:true in colModel

编辑:如果您遇到此问题,请发布一些数据以查看发生的情况。

还指定使用哪个版本的jqGrid