2016-03-17 56 views
0

我想在我的基于Angular 1.5的项目中使用ag-grid来自定义数据表。自定义是允许用户选择表格中的最大行数,例如最大值为2.自定义ag网格设置最大数量的可选行

我使用的node.setSelected(false)的代码如下,我在文档页here中找到,但是我找到了得到了错误:node.setSelected is not a function当选择超过最大的2

var gridOptions = { 
    columnDefs: columnDefs, 
    rowSelection: 'multiple', 
    onRowSelected: onRowSelected 
}; 


function onRowSelected(event) { 
       var curSelectedNode = event.node; 
       var selectionCounts = vm.gridOptions.api.getSelectedNodes().length; 
       if (selectionCounts > 2) { 
        var oldestNode = vm.gridOptions.api.getSelectedNodes()[0]; // get the first node, to be popped out 
        oldestNode.setSelected(false); // causes the above 'not a function' error 
       }  
      } 

有谁知道什么可能是错误的AG-网格其setSelected() API?或者任何更好的方式来做这个定制?

回答

1

事实证明,setSelected(false)方法在当前ag-grid API已经过时了,我发现我可以用deselectIndex()方法来取消最古老的节点:

if (selectionCounts > 2) {       
        vm.gridOptions.api.deselectIndex(0, true); // This works! 
       } 

希望这会帮助别人,将来别人!

1
var columnDefs =[{ 
         headerName: 'Name', 
         field: 'name', 
         width: 108, 
         minLength: 1, 
         maxLength: 20, 
         editable: true 
}] 

- 修改原型文件.js文件

TextCellEditor.prototype.init = function (params) { 
     var eInput = this.getGui(); 
     var startValue; 

     // Set min & max length 
     if (params.column.colDef.maxLength) 
      eInput.maxLength = params.column.colDef.maxLength; 
     if (params.column.colDef.minLength) 
      eInput.minLength = params.column.colDef.minLength; 

     // cellStartedEdit is only false if we are doing fullRow editing 
     if (params.cellStartedEdit) { 
      this.focusAfterAttached = true; 
      var keyPressBackspaceOrDelete = params.keyPress === constants_1.Constants.KEY_BACKSPACE 
       || params.keyPress === constants_1.Constants.KEY_DELETE; 
      if (keyPressBackspaceOrDelete) { 
       startValue = ''; 
      } 
      else if (params.charPress) { 
       startValue = params.charPress; 
      } 
      else { 
       startValue = params.value; 
       if (params.keyPress !== constants_1.Constants.KEY_F2) { 
        this.highlightAllOnFocus = true; 
       } 
      } 
     } 
     else { 
      this.focusAfterAttached = false; 
      startValue = params.value; 
     } 
     if (utils_1.Utils.exists(startValue)) { 
      eInput.value = startValue; 
     } 
     this.addDestroyableEventListener(eInput, 'keydown', function (event) { 
      var isNavigationKey = event.keyCode === constants_1.Constants.KEY_LEFT || event.keyCode === constants_1.Constants.KEY_RIGHT; 
      if (isNavigationKey) { 
       event.stopPropagation(); 
      } 
     }); 
    }; 
相关问题