Kendo Grid列的隐藏/显示,启用/禁用

22
如何在条件或事件上隐藏/显示和启用/禁用kendo网格中的列。 我只能在.model中找到启用/禁用kendogrid列的选项。
任何帮助都将不胜感激。
提前致谢!
3个回答

36

在KendoUI Grid中显示/隐藏列时,应使用showColumnhideColumn方法,并将一个数字(要显示/隐藏的列的索引)或字符串(该列中相关字段的名称)作为参数。

例如:

var grid = $("#grid").kendoGrid({
    dataSource: ds,
    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");

$("#show_col1").on("click", function() {
    // Use the index of the column to show
    grid.showColumn(0);
});

$("#hide_col1").on("click", function() {
    // Use the name of the field to hide it
    grid.hideColumn("FirstName");
});
你可以通过在列初始化中设置 hidden 来控制列是否应该最初隐藏。
在这里查看示例:http://jsfiddle.net/OnaBai/XNcmt

非常感谢,隐藏/显示功能非常好用,即使网格是可编辑的也能正常工作。 同样,是否有任何可用于自定义逻辑或事件上启用/禁用列的功能呢? 再次感谢。 - Apurv Deshmukh
不确定你评论的最后一部分“是否有任何可用于启用/禁用自定义逻辑事件列”的理解...基本上,当事件或条件满足时,使用showColumn/hideColumn - OnaBai
你好,我们如何使其对于原始数据做同样的处理? - 3 rules
@padhiyar,你尝试使用过滤条件了吗? - OnaBai
@OnaBai 是的,那也是一种解决方案,但我想在客户端根据下拉列表选择隐藏和显示原始数据,这在客户端是否可行?我看过这个示例,但它是静态的。我想要一次获取所有数据,并根据下拉列表的选择进行隐藏、显示或筛选,而且网格的列与下拉列表的值相同。 - 3 rules

1

Kendo grid包含一个 showColumn方法,该方法接受索引或列名字符串。为了启用隐藏/显示列,您将初始化grid columnX为普通列,并标记为隐藏的(MVC中使用.Hidden()方法绑定列)。然后根据页面事件,您可以简单地调用showColumn(然后hideColumn来翻转操作)。


0

对于已经创建的Kendo网格,您可以通过以下方式显示/隐藏并使所有列可编辑/不可编辑:

var allowEdit = false;
var grid = $("#sampleGrid").data("kendoGrid");
grid.showColumn(0);
grid.showColumn(1);

if (!allowEdit) {
    grid.hideColumn(0);
    grid.hideColumn(1);
}
var len = $("#sampleGrid").find("tbody tr").length;
for (var i = 0; i <= len ; i++) {
    var model = $("#sampleGrid").data("kendoGrid").dataSource.at(i);
    if (model) {
        for (i = 0; i <= (grid.columns.length - 1) ; i++) {
            var column = grid.columns[i];
            model.fields[column.field].editable = allowEdit;
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接