编辑网格时,如何按行禁用特定字段?

时间:2013-01-08 18:29:15

标签: javascript kendo-ui telerik grid

我有一个带有数据的kendo网格和多个列(比如col 1,2和3)。第1,2,3列需要能够根据彼此的值进行编辑(或防止编辑)。这是特定于行的。

例如,如果第1列(日期)是<第2列(日期)然后不允许编辑第3列。

我知道禁用或启用整个列很简单,但我的要求是行特定的。因此,第1行可以启用第3列,第2行可以禁用第3列。

有什么想法吗?

2 个答案:

答案 0 :(得分:13)

我的建议是创建一个验证条件的编辑器功能。这当然有一个缺点,即一个特殊的解决方案,但......它的工作原理!

让我们有以下条目(DataSource的数据):

var entries = [
    { id:1, col1: new Date(2012, 11, 31), col2: new Date(2013, 0, 1), col3: "Yes" },
    { id:2, col1: new Date(2013, 0, 1), col2: new Date(2013, 0, 1), col3: "No" },
    { id:3, col1: new Date(2013, 0, 2), col2: new Date(2013, 0, 1), col3: "No" }
];

然后我将网格定义为:

var grid = $("#grid").kendoGrid({
    dataSource : {
        data    : entries,
        schema  : {
            model: {
                id    : "id",
                fields: {
                    col1: { type: "date"},
                    col2: { type: "date"},
                    col3: { editable: true }
                }
            }
        },
        pageSize: 3
    },
    columns    : [
        { field: "col1", title: "Col1", format: "{0:yyyy-MM-dd}" },
        { field: "col2", title: "Col2", format: "{0:yyyy-MM-dd}" },
        { field: "col3", title: "Edit?", editor: checkAndEdit }
    ],
    editable   : "incell",
    navigatable: true,
    pageable   : true
}).data("kendoGrid");

其中col1col2是日期,而col3是一个可以编辑的字符串当且仅当 col1小于{ {1}}。

我将col2函数定义如下:

checkAndEdit

如果我function checkAndEdit(container, options) { if (options.model.col1 < options.model.col2) { $('<input data-bind="value:' + options.field + '" ' + 'data-format="' + options.format + '" ' + 'class="k-input k-textbox"/>') .appendTo(container); } else { grid.closeCell(container); } } &lt; {{}},我会生成相应的input字段。 col1并以其他方式调用col2退出closeCell模式。

您可以看到它正在运行here

答案 1 :(得分:2)

保持简单使用(在网格列中绑定)

[Editable(false)]
public string ob_name { get; set; }

在用于Kendo Ui Grid的Costume类中。

有关详细信息,您还可以see this