Javascript 根据条件在列菜单选项的列中隐藏列
我正在为剑道网格使用剑道列菜单选项。我希望在通过第三个选项(即列)隐藏/显示列时,如果该列的标题为空,我希望隐藏菜单 这里我想隐藏RefValue4和RefValue5,因为它对应的值从数据库中为空。所以不需要显示它们 我是这样做的:Javascript 根据条件在列菜单选项的列中隐藏列,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我正在为剑道网格使用剑道列菜单选项。我希望在通过第三个选项(即列)隐藏/显示列时,如果该列的标题为空,我希望隐藏菜单 这里我想隐藏RefValue4和RefValue5,因为它对应的值从数据库中为空。所以不需要显示它们 我是这样做的: if (grid.dataSource.data()[0].RefName4==null) { grid.hideColumn(18); } 但是无法实现结果。按照您在代码示例中的建议检查网格第一行的内容就足够了吗?如果是,您可以定义一个隐藏列的数据绑定
if (grid.dataSource.data()[0].RefName4==null) {
grid.hideColumn(18);
}
但是无法实现结果。按照您在代码示例中的建议检查网格第一行的内容就足够了吗?如果是,您可以定义一个隐藏列的数据绑定处理程序,如下所示:
dataBound : function (e) {
// Get reference to the grid
var grid = e.sender;
// Get reference to received data
var data = e.sender.dataSource.data();
// Check that we actually received any data
if (data.length > 0) {
// Iterate on columns hiding those that in the first row have no data
$.each(grid.options.columns, function (idx, elem) {
if (!data[0][elem.field]) {
grid.hideColumn(idx);
}
});
}
}
只要您从服务器接收到数据,它就会运行,但正如我所说的,只检查第一个的内容,但您可以轻松地修改以检查所有内容。这没有实现的是从菜单中隐藏列标题
请参见此处的运行示例:
编辑:如果需要不显示没有数据的列,但也不显示在菜单中,则需要在网格中配置没有这些列的列。一旦收到数据,您可以在运行时执行以下操作:
// Fetch data from the DataSource
ds.fetch(function (d) {
// By default, no column in the grid
var columns = [];
// List of available column definitions
var definitions = [
{ field: "Id", hidden: true },
{ field: "FirstName", title: "First Name" },
{ field: "LastName", title: "Last Name" },
{ field: "City" },
{ field: "Position" }
];
// For each column in the definition check if there is data
$.each(definitions, function(idx, elem) {
if(d.items[0][elem.field]) {
// If there is data then copy the definition to columns
columns.push(elem);
}
});
// Use received data plus the columns definition computed
$("#grid").kendoGrid({
dataSource: d.items,
editable : false,
pageable : true,
columnMenu: true,
columns : columns
}).data("kendoGrid");
});
其中ds是数据源定义
请看这里:嘿,非常感谢您在这方面的帮助!!!因为RefValue4在该列中没有任何值,所以我不想让用户单击该列。我们可以禁用它吗?我也不想隐藏该列。我想隐藏隐藏和显示列的选项,如果该列中没有数据,您不想在初始加载时隐藏该列,或者您想这样做,然后在菜单?抱歉,我想我无法让您理解该场景。请看,现在我有一个5选项,如RefValue1,…,Refvalue5。现在我的问题是RefValue4和Refvalue5列中没有数据,因此我只想向用户显示3个选项,即仅RefValue1,…,RefValue3