gpt4 book ai didi

javascript - 在容器 Kendo 窗口调整大小上动态更改 Kendo Grid 行的高度

转载 作者:行者123 更新时间:2023-11-30 17:54:30 26 4
gpt4 key购买 nike

我有两个问题。我在 Kendo 窗口中包含的页面上有一个网格。我需要增加/减少网格行的大小以确保它填满窗口的整个高度。我在另一个页面上也有一个网格,它位于一个 Div 内,需要调整大小以适应文档窗口调整大小时其容器的高度。

我有 Kendo 支持人员给我的以下代码,但它没有执行我需要它执行的操作。它只将网格设置为其容器的 100%。但这会在行下方留下空白。我想要没有空白,并且让行动态更改它们的高度,以便它们都适合其中一个的空间,并在计算出有多少行适合另一个窗口的大小后动态更改 pageSize .

其中一个网格是前十名网格,另一个是所有员工列表网格。

    $(window).resize(function() {
var gridElement = $("#grid"),
newHeight = gridElement.innerHeight(),
otherElements = gridElement.children().not(".k-grid-content"),
otherElementsHeight = 0;

otherElements.each(function(){
otherElementsHeight += $(this).outerHeight();
});

gridElement.children(".k-grid-content").height(newHeight - otherElementsHeight);
});

对于文字的数量,我深表歉意,但我已经坚持了好几天,想为您提供尽可能多的信息。

编辑:开箱即用的水平调整大小工作。为什么高度不一样? :S

EDIT2:这是我用于我的网格的代码,它位于剑道窗口的内容部分

@(Html.Kendo().Grid<DataModels.UI.OperatorPickRatesChartModel>()
.Name("topTenPickersChart")
.Columns(columns =>
{
columns.Bound(b => b.operatorId).Title("Operator Id");
columns.Bound(b => b.averagePicksLastThirty).Title(" Average Picks Last Thirty");
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Field(b => b.operatorId).Editable(false);
model.Field(b => b.averagePicksLastThirty).Editable(false);
})
.Read("operatorTopTenPickRates", "DashBoard")
.Events(events => events.Error("error"))
.PageSize(10)
)
.Filterable()

)

最佳答案

对于以下解决方案,您需要在使用 100% 区域(宽度和高度)的 HTML 元素内放置表格。为了得到它,我所做的是将 HTML 定义为:

<div id="container">
<div id="grid"></div>
</div>

和以下 CSS 样式:

#container {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}

不,一旦调整了窗口大小,我们就需要做一些数学运算...

$(window).resize(function () {
// Get container height
var containerH = $("#container").height();
// Get Grid height
var tableH = grid.element.height();
// Get Grid body height (the remaining is header and footer)
var bodyH = grid.table.height();
// The new height of the body is:
grid.table.height(containerH - tableH + bodyH - 1);
});

JSFiddle 在这里显示:http://jsfiddle.net/OnaBai/dB5CF/

编辑:如果您的网格位于剑道窗口内,那么您必须:

  1. 您不需要 CSS 定义。
  2. 您不是在调整 $(window) 的大小,而是在调整 kendoWindow 的大小,因此我会将该代码放入 Kendo Window resize 事件处理程序中。
  3. 您需要为 Kendo Window 设置一个初始宽度。

所以你的代码应该是这样的:

$("#container").kendoWindow({
width : 400,
resize: function (e) {
console.log("resize", e);
var containerH = $("#container").height();
var tableH = grid.element.height();
var bodyH = grid.table.height();
grid.table.height(containerH - tableH + bodyH - 1);
}
});

var grid = $("#grid").kendoGrid({
dataSource: {
data : createRandomData(100),
pageSize: 10,
schema : {
model: {
fields: {
Id : { type: 'number' },
FirstName: { type: 'string' },
LastName : { type: 'string' },
City : { type: 'string' }
}
}
}
},
editable : false,
pageable : true,
columns : [
{ field: "FirstName", width: 90, title: "First Name" },
{ field: "LastName", width: 90, title: "Last Name" },
{ field: "City", width: 100 }
]
}).data("kendoGrid");

修改后的 JS Fiddle:http://jsfiddle.net/OnaBai/dB5CF/2/

关于javascript - 在容器 Kendo 窗口调整大小上动态更改 Kendo Grid 行的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18337693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com