jquery - jqgrid: getCell 总是返回 false

标签 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 });
                    }
                }

            });


        },


        };

最佳答案

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

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

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

我的建议是有一列充当 id(确保它具有唯一值),并且应在 colModel 中将其设置为 key:true

编辑:如果您对此有困难,请发布一些数据以查看发生了什么。

还指定使用哪个版本的 jqGrid

关于jquery - jqgrid: getCell 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454895/

相关文章:

jquery 更改多个背景上的 css 背景位置

javascript - 如何使用jquery追加添加元素并设置文本值增加

jqgrid - 我怎么知道我使用的是哪个版本的 jqgrid

c# - 无法在当前范围或上下文中解决

jquery - 页面上包括jquery菜单和jqGrid

javascript - 我如何操作 jqGrid 的搜索/过滤器?

JQuery Accordion 如何使用脚本打开特定 header

jquery - 将选择器样式作为脉冲动画应用于元素

javascript - jQuery 悬停事件被子 &lt;input&gt; 中断。有没有解决的办法? ( Chrome 问题)

jquery - jqgrid 过滤器在加载时删除一行一次