onSelectRow在JQGrid中不起作用

时间:2014-06-04 04:51:25

标签: javascript jquery javascript-events jqgrid jqgrid-formatter

我已经完成了因为没有在选择路线上工作而给出的解决方案,但它们对我不起作用。

我有以下代码:

$("#myActions_gridTable").jqGrid({
                    datatype:'local',
                    data: myActionsData,
                    cellsubmit: 'clientArray',
                    cellEdit: true,
                    rowNum: noOfLinesToDisplay,
                    pager: $("#myActions_pager"),
                    sortname: 'contract_Name',
                    viewrecords: true,
                    sortorder: 'asc',
                    autoWidth:true,
                    loadonce: true,
                    cmTemplate: { title: false },
                    height:'auto',
                    scrollrows: true,
                    colNames:["id","Status"],
                    colModel:[
                        {
                            name:'id',index:'id', jsonmap:'id', width:1,hidden:true,key:true, editable:true
                        },

                        {name:'status',index:'status', align:'center', sortable: false,
                            editable: true,
                            edittype: "select",
                            width: 150,
                            editoptions: {
                                value: "1:Done;2:Running"
                            }

                        }
                    ],


                    onSelectRow : function(id){ 
                        console.log('inside onSelectRow');
                        if (id && id !== lastsel) {
                            $('#myActions_gridTable').restoreRow(lastsel);
                            $('#myActions_gridTable').editRow(id, true);
                            lastsel = id;
                        }

                    }
                });

此处OnSelectRow不会被触发,也不会打印console.log。 请帮忙。

3 个答案:

答案 0 :(得分:1)

您需要将变量lastsel定义为

 var lastsel;

在上面的代码中你需要做:

var lastsel;
$("#myActions_gridTable").jqGrid({
..............
..............
..............,
  onSelectRow : function(id){ 
                        console.log('inside onSelectRow');
                        if (id && id !== lastsel) {
                            $('#myActions_gridTable').restoreRow(lastsel);
                            $('#myActions_gridTable').editRow(id, true);
                            lastsel = id;
                        }

                    }

这是工作JsFiddle Demo

可以在这里得到更多信息http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events

答案 1 :(得分:1)

一个可能的问题可能是使用edittype: "select" 而没有使用formatter: "select"。无论如何,如果您不使用editoptions: { value: "1:Done;2:Running" },我会非常怀疑formatter: "select"属性。

如何查看列"status"的输入数据?您使用12"Done""Running"吗?如果您想在数据中保留12值,但又希望将值显示为"Done""Running",那么您应该使用

formatter: "select", edittype: "select", editoptions: {value: "1:Done;2:Running"}

The demo演示了它。它使用

var myActionsData = [
        { id: 10, status: 1 },
        { id: 20, status: 2 }
    ];

作为输入。

或者可以使用

var myActionsData = [
        { id: 10, status: "Done" },
        { id: 20, status: "Running" }
    ];

但应该使用

edittype: "select", editoptions: {value: "Done:Done;Running:Running"}

在案件中。在最后一种情况下,不需要formatter: "select":请参阅another demo

答案 2 :(得分:1)

<{1}}为真时,

OnSelectrow无效。

您可以使用cellEdit代替onCellSelect