【问题标题】:jqgrid select rows by default based on column valuejqgrid默认根据列值选择行
【发布时间】:2011-08-15 14:27:44
【问题描述】:

作为我previous question 的扩展,我想默认自动选择行。在this response 中,他们使用 loadComplete 在服务器请求后选择行。但是,我从服务器请求一次并从那时起使用本地数据。我需要在每次组织列时重新选择行,搜索网格......基本上每次数据视图发生变化时。

我根据列 (book_id) 而不是明确的 rowid 选择行,那么答案 here 是否合适?或者 jqGrid 是否有明确的方法(例如onUpdateGrid)来帮助实现这个目标?现在看来,我只需要在 onPagingonSortCol 下复制代码。

fav_books 列的 dataInit 方法:

initBookEdit: function(elem){
  //populate reference table
  populateBookRefs($(elem).val());

  //display dialog which contains reference table
  //pressing OK button on dialog saves all id's as a
  //comma delimited list in the main table
  $('#bookRefPopup').dialog({
     buttons: {
    "OK": function(){
        var selectedRows = bookRefTable.jqGrid('getGridParam', 'selarrrow');
        var selectedIds = new Array();
        for(var i=0; i<selectedRows.length; i++){
            var changedRow = bookRefTable.getRowData(selectedRows[i]);
            var book_id = changedRow['book_id'];
            selectedIds.push(book_id);
        }
        var editedRow = $('#mainTable').jqGrid('getGridParam', 'selrow');
        $('#mainTable').jqGrid('setCell',editedRow, 'docs_ref', selectedIds, null, null, true);
        $('#mainTable').trigger('reloadGrid');
        $(this).dialog( "close" );
    },
    Cancel: function() {
        $( this ).dialog( "close" );
    }
}//close buttons
  });//close dialog
}

以及引用表的初始化:

function populateBookRefs(ids){
  values = ids.split(',');
  grid.jqGrid({
     ...
     loadComplete:  function(){ //event executed after server request
        for(var i=0; i<values.length; i++){
          grid.jqGrid('setSelection',values[i],true);
        }

    }
     ...
  });
}

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    看起来gridComplete 会做我想做的事:

    gridComplete: function(){   
        var grid_ids=grid.jqGrid('getDataIDs');
        for(var i=0; i<grid_ids.length; i++){
            var rowid = grid_ids[i];
            var aRow = grid.jqGrid('getRowData',rowid);
            var book_id = aRow['book_id'];
            if($.inArray(book_id,values)!=-1){
                grid.jqGrid('setSelection',rowid,true);
            }
        }
    }
    

    【讨论】:

    • 像你一样枚举所有行(关于getDataIDs)在很多行的情况下会很慢。看看the another。有显示更有效的枚举方式。您只需将ui-state-disabled 类的设置更改为您需要的“setSelection”调用。
    • 感谢您抽出宝贵时间发现潜在问题。非常感谢!
    • 等等,现在我遇到了 gridComplete 永远不会完成的问题,因为 _index 是对象 {undefined:99},所以我永远无法获取 rowData 并开始选择内容。这可能是本地数据问题吗?
    • 如果您包含您使用的测试数据并包含更完整的 JavaScript 代码,我可以尝试帮助您。为了能够做到这一点,我应该有足够的数据来重现您的问题。
    • 有没有 jqgrid 的主机,所以我可以创建一个小提琴?
    猜你喜欢
    • 2012-11-09
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多