jqGrid局部过滤导致rowid被设置为null

时间:2015-04-15 20:56:37

标签: jqgrid

基于jqGrid Filtering Records解决方案,我在本地实施了过滤。

但是我无法将第一行设置为selected.Looks将行ID设置为null。我不确定为什么会这样。

代码如下

$("#showMatchingRecords").click(function(e) {             
    e.preventDefault();               
    var grid = $("#WorkList"), filter,searchfiler;
    searchfiler = "700677";
    grid[0].p.search = true;
    filter = { groupOp:'OR', rules: [] };
    filter.rules.push({field:"Id",op:"eq",data:searchfiler});
    $.extend(grid[0].p.postData, {filters:JSON.stringify(filter)});
    grid.trigger("reloadGrid", [{page:1}]);
   });

$("#showAllRecords").click(function(e) {
     e.preventDefault();
    var grid = $("#WorkList");
    grid[0].p.search = false;
    $.extend(grid[0].p.postData, { filters: "" });
    grid.trigger("reloadGrid", [{page:1}]);            
});

这是我的gridComplete方法,我也尝试过与loadComplete一样的

       gridComplete : function() {
            $("tr.jqgrow:odd").css("background", "#DDDDDC");
            var grid = $("#WorkList");

            var ids = grid.getDataIDs();

            console.log('before ids....', ids);

            for (var i = 0; i < ids.length; i++) {
                grid.setRowData(ids[i], false, { height: 35 });
            }

以下是我的网格选项:

    caption: 'Records List',
    width: 1000,
    height: 200,
    pager: $("#WorkListPager"),
    rowNum: 50,
    sortname: 'Name',
    loadonce: true,
    sortorder: "asc",
    cellEdit: false,
    viewrecords: true,
    imgpath: '/Content/Themes/Redmond/Images',
    autowidth: false,
    onSelectRow: function (rowid, status, e) {
     /* function */
        }

1 个答案:

答案 0 :(得分:0)

要在每次重新加载网格时选择第一行,您需要执行以下操作

loadComplete: function () {
    var $self = $(this);
    if (this.rows.length > 1) { // test that grid is not empty
        $self.jqGrid("setSelection", this.rows[1].id);
    }
}

我严格建议您在网格中另外添加gridview: true选项(有关详细信息,请参阅the answer),并将gridComplete替换为rowattr的使用情况(请参阅{{ 3}})。