0

我使用 ASP.NET MVC 4 和 Kendo UI 开发了一个 Web 应用程序。它有一个包含复选框列的网格。我需要在该复选框列中有一个三态复选框(真、假、空)。

如果用户勾选该框,那么它的值应该是true,如果用户取消勾选该框,那么它的值应该是false。重要的是如果用户离开时没有勾选或取消勾选它,那么它的值应该是null.

剑道网格中是否可以有三态复选框?如果是的话怎么做?

4

1 回答 1

1

根据这篇文章,将复选框设置为indeterminate状态的唯一方法是以编程方式进行。问题是每次更新值时,都会重绘包含复选框的单元格,因此会删除第三个状态。

您可以通过以下方式检查:

var grid = $("#stocks_tbl").kendoGrid({
    dataSource: [
        { id: 1, active: true, symbol: "AAPL" },
        { id: 2, active: false, symbol: "AMZN" },
        { id: 3, active: false, symbol: "GOOG" }
    ],
    editable  : true,
    columns   : [
        { field: "symbol", title: "Tick" },
        {
            field   : "active",
            template: '<input class="active" type="checkbox" #= active ? checked="checked" : "" # />'
        }
    ]
}).data("kendoGrid");

$(document).on("change", ".active", function (ev) {
    $(ev.currentTarget).prop("indeterminate", true);
    $(ev.currentTarget).prop("checked", true);
    alert("Shall I continue?");
    var item = grid.dataItem($(this).closest("tr"));
    item.set("active", true);
});

如果您单击复选框,您将看到第三个状态,直到您关闭对话框并且我们将值设置为复选框。如果我们不设置它,该值不会反映在模型中。

于 2013-07-23T23:01:11.170 回答