Tim*_*Tim 9 javascript kendo-ui kendo-grid
默认情况下,kendo网格将展开以填充其包含的div.它只是一个表元素,所以本质上.
<table role="grid">
<colgroup>
<col style="width:200px"> // etc
<colgroup>
<thread>
// content
</thread>
</table>
Run Code Online (Sandbox Code Playgroud)
但是,当您添加更多cols(或者太多)时,它们会来回缩放以适应.我想要溢出水平滚动条.
为此,我添加了一些在启动,添加和重新排序时运行的代码.
this._initWidths = function () {
var totalWidth = 0;
for (var i = 0; i < grid.columns.length; i++) {
var width = grid.columns[i].width;
$('#myGrid .k-grid-header-wrap colgroup col').eq(i).css('width', width + 'px');
$('#myGrid .k-grid-content colgroup col').eq(i).css('width', width + 'px');
totalWidth = totalWidth + width;
}
table.css('width', totalWidth + 'px');
};
Run Code Online (Sandbox Code Playgroud)
然而,剑道似乎有自己的逻辑,反对这一点.Colgroup条目将开始被删除,搞乱一切.
有什么办法可以阻止这个吗?有没有更好的方法来做我想要的?
谢谢.
我有一个表的容器:
<div id="myWindow">
<div id="myGrid"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
并应用以下样式:
#myWindow {
width: 400px;
overflow-x: scroll;
}
Run Code Online (Sandbox Code Playgroud)
你可以看到我强制宽度为400px并隐藏(和滚动)溢出的内容.
然后我定义以下内容grid:
var grid = $("#myGrid").kendoGrid({
dataSource : {
data : entries,
schema : {
model: {
id: "city"
}
},
pageSize: 5
},
columns : [
{ field: "city", title: "City", width: 100 },
{ field: "time", title: "Time", format: "{0:HH:mm}", width: 200},
{ field: "datetime", title: "Date - Time", format: "{0:yyyy-MM-dd HH:mm}", width: 300 }
],
sortable : {
mode : "single",
allowUnsort: false,
field : "city"
},
editable : "popup",
navigatable: true,
pageable : true
}).data("kendoGrid");
Run Code Online (Sandbox Code Playgroud)
我得到的结果是网格水平溢出其容器的大小.
看到它在这里运行
注意甚至很好的是,paging总是在可见区域保持400px拟合,而网格实际上是100 + 200 + 300 = 600(width的columns)
编辑:如果你想要的width是 grid相加的columns那么你应该添加(在初始化网格后).
var totalWidth = 0;
for (var i = 0; i < grid.columns.length; i++) {
var width = grid.columns[i].width;
totalWidth = totalWidth + width;
}
grid.element.css('width', totalWidth + 'px');
Run Code Online (Sandbox Code Playgroud)
循环计算总宽度,然后我将表设置为它(不需要更改列,因为它们是正确的).
把它放在这里
您只需确保Grid 可滚动并设置从中创建Grid的元素的宽度.
<div id="myGrid" style='width:500px;'></div>
var grid = $("#myGrid").kendoGrid({
scrollable:true,
//...
})
Run Code Online (Sandbox Code Playgroud)
这是在行动.