如何使剑道网格列自动宽度

Posted

技术标签:

【中文标题】如何使剑道网格列自动宽度【英文标题】:How to make Kendo Grid Column auto Width 【发布时间】:2014-10-26 05:17:43 【问题描述】:

我使用了 jQuery 插件数据表,如果我们不指定 Grid 的列宽,它会自动调整列的宽度来获取标题或数据内容的长度。

现在我想在 Kendo Grid 中使用相同的功能,但是,除了固定 Grid 包装样式并为所有列设置 col 宽度 css 之外,我找不到它,这使得小长度字段也占用大空间。

所以我的问题是如何使 Kendo Grid 列(通常我有很多字段,并且它是可滚动的)自动宽度或不同长度(我不希望手动设置每列的宽度)。

谢谢

【问题讨论】:

【参考方案1】:

你必须在定义列时设置宽度,如果你不指定宽度,那么它将采用内容的自动宽度。 看看这份文档 http://docs.telerik.com/kendo-ui/api/web/grid#configuration-columns.width

columns: [
      field: "name", width: "200px" ,
      field: "tel", width: "10%" , // this will set width in % , good for responsive site
      field: "age"  // this will auto set the width of the content 
   ],

如果您需要更多处理剑道宽度的方法,请查看http://docs.telerik.com/kendo-ui/getting-started/web/grid/walkthrough#column-widths

【讨论】:

【参考方案2】:

将可滚动设置为 false 应该可以解决问题:

$('#grid').kendoGrid(
  dataSource: 
     data: data
  ,
  scrollable: false,
  resizable: true
);

【讨论】:

因为如果你放 "scrollable:false" ,如果你的总列宽度大于屏幕宽度,当你调整大小时出现的水平滚动将不会出现,并且孩子将被强制适应进入父母。因此,“scrollable:false”修改了剑道网格的构建方式。不放的话,父宽度按子宽度计算。【参考方案3】:

我也用 dataBound 解决了这个问题:

我关于数据绑定中 kendo 自动调整列的问题

        <kendo-grid id="grid" options="mainGridOptions">
        </kendo-grid>



        dataBound: function()
            var grid = $("#grid").data("kendoGrid");
            for (var i = 0; i < grid.columns.length; i++) 
                grid.autoFitColumn(i);
            
        ,
        dataSource: $scope.data,

你可以在 jquery 中做到这一点:

$('#grid').kendoGrid(
  dataSource: 
     data: data
  ,dataBound: function()
            var grid = $("#grid").data("kendoGrid");
            for (var i = 0; i < grid.columns.length; i++) 
                grid.autoFitColumn(i);
            
        ,

【讨论】:

感谢您的建议,但从 2015 年第一季度开始提供。 @federico 嵌入一行配置?没有js功能?怎么样? 不幸的是,没有简单的方法,您需要从每列的 X 表中获取最大长度,如 select max(len(col1)) as len1,然后为每个列预设宽度不知何故,我仍在研究 Pixels,但它甚至可以在 2014 或更早的旧版本中工作。

以上是关于如何使剑道网格列自动宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何为单个剑道网格列设置最大宽度属性?

过滤后如何在剑道 ui 网格上显示水平滚动条?

如何在剑道 UI 网格中设置多行列

剑道网格的水平滚动

剑道网格列优化怎么做

如何在剑道网格中手动设置列值