(jqGrid)查找单击的行号时出错

时间:2017-08-01 05:00:30

标签: javascript jqgrid

function drawTable(url){
        $('#reportList').jqGrid('GridUnload');

        $('#reportList').jqGrid({
            url: url,
            mtype: 'GET',
            datatype: 'json',


            colNames:['num','section1','section_detail','product','product_description','status','rate','start_date','end_date','issue','in_charge','write_date','view'],
            colModel:[
                {name:'num', index:'num', hidden:true},
                {name:'section1', index:'section1',  width:60},
                {name:'section2', index:'section2'},
                {name:'product', index:'product', width:90},
                {name:'product_description', index:'product_description'},
                {name:'status', index:'status', width:50},
                {name:'rate', index:'rate', width:50},
                {name:'start_date', width:90, index:'start_date'},
                {name:'completion_date', width:90, index:'completion_date'},
                {name:'issues', index:'issues'},
                {name:'in_charge', index:'in_charge', width:80},

                {name:'writedate', index:'writedate',width:90},
                {name:'rewrite', index:'rewrite', width:60, formatter: function addButton(cellvalue, options, rowobject){


                return "<input class='btnEdit' type='button' value='view' onClick='editReport.call(this)'/>" 

                }}
            ],

            pager: '#pager',
            sortname: 'section1',
            sortorder: 'DESC',
            multiselect: false,
            rownumbers: true,
            rowNum:50,
            loadonce: true,
            multiselect:true,
            gridComplete: function(){


            }

        });

    }

    function editReport(){

        //get row number
        var clickedRow = $(this).closest("tr.jqgrow").attr("id");

        var ids = jQuery('#reportList').jqGrid('getDataIDs');

        // get row object with row num
        var rowId=ids[clickedRow-1];
        var rowData = jQuery('#reportList').jqGrid('getRowData', rowId);

        getReportInfo(rowData.num)
  }

您好,我正在使用Spring框架制作简单的报表程序。 为了显示所有已注册的报告,我应用了jqGrid(它的十三列表)以获得更好的用户界面。所有列除了&#39; num&#39;并且&#39;查看&#39;显示报告的详细信息。专栏&#39; num&#39;隐藏信息以从数据库中检索所有其他信息。最右边的列(&#39; view&#39;)是一个按钮,用于在子窗口中查看报告的详细信息。
在功能&#39; editReport&#39;中,我得到了数字&#39;通过查找单击的行号来查找报告。

我看起来很好。但是,当我每页设置15行并更改为第2页时,&#39; clickedRow&#39;生成错误的号码。当点击第2页的第一行时,我希望为1,但它会返回16 ..所以,它不能得到数字#39;来自点击的行并生成错误..

1 个答案:

答案 0 :(得分:2)

editReport的代码不正确。值$(this).closest("tr.jqgrow").attr("id") 不是行索引。根据定义,它是 rowid 。您根本不需要使用getDataIDs。取而代之的是,您可以使用var rowId = $(this).closest("tr.jqgrow").attr("id");,然后将该值用作getRowData中的选项或其他方法中的任何选项。

此外,如果num列包含唯一值(所有行中的值不同),则可以在{{1的列定义中添加key: true属性} num中的列。它将通知jqGrid使用列中的值作为rowid(colModel元素的id属性的值)。另一种方法是添加<tr>,但为了确保方法有效,您应该包含来自jsonReader: { id: "num" }的JSON响应示例(至少一行或JSON数据)。此外,了解您使用的jqGrid的版本以及jqGrid(free jqGrid,商业Guriddo jqGrid JS或旧的jqGrid的 fork 非常重要。版本&lt; = 4.7)。