首页 > 解决方案 > KendoUI 网格自动将列调整到最小/最大宽度

问题描述

我正在使用此处描述的 autoFitColumns 方法:

https://www.telerik.com/kendo-angular-ui/components/grid/columns/resizing/#toc-auto-fitting-the-content

但在某些情况下,该方法会将列的大小设置得太小(例如,当网格中只有 1-2 列时)或太大(当列包含长文本并且不需要实际显示所有内容时)。

自动调整大小时有没有办法设置最大/最小宽度?

标签: kendo-uikendo-gridkendo-ui-angular2

解决方案


据我所知,这不是内置在网格中的;但是,您可以通过更新列选项来做到这一点:

var FitCols = function(){
  var grid = $("#grid").data("kendoGrid");
  if (grid) {
    //copy current column options from the grid
    var newOptions = $.extend({}, grid.getOptions().columns);               
    var minW = 80;  //minimum column width
    var maxW = 300; //maximum column width
    for (var i = 0; i < grid.columns.length; i++) {
      grid.autoFitColumn(i);
      //after autofit, limit to max and min width
      var curW = grid.columns[i].width;
      var actualW = Math.max(curW, minW); //min check
      actualW = Math.min(actualW, maxW); //max check
      newOptions[i].width = actualW + "px";
    }    
    grid.setOptions({ columns:  newOptions });
  }        
};  

此代码在自动调整大小之前从网格中获取列选项。然后迭代每一列,调用 autosize,根据你的最大值和最小值检查新大小,将新大小写入复制的列选项,最后将这些选项写回网格。

这是一个道场演示: http ://dojo.telerik.com/@ezanker/EFiVoNiP

请记住,如果您有很多列,则自动调整大小会成倍地变慢......


推荐阅读