【问题标题】:How to create tri-state checkbox (true / false / null) in Kendo UI Grid如何在 Kendo UI Grid 中创建三态复选框(真/假/空)
【发布时间】:2013-07-23 04:50:12
【问题描述】:

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

如果用户选中该框,则其值应为true,如果用户取消选中该框,则其值应为false。重要的是,如果用户没有勾选或取消勾选就离开了,那么它的值应该是null

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

【问题讨论】:

  • 你觉得那个复选框是什么样子的?我的意思是,从 UI 的角度来看,false 和 null 之间的区别是什么?一旦勾选了一次,我就不清楚它是如何返回 null 的。
  • @OnaBai "false" 应该在框中不显示任何内容,而 "null" 应该显示完全填充的框。以及 "true" 应该在框内显示正确的标记。我想你明白我的意思..

标签: asp.net-mvc-4 checkbox kendo-ui kendo-grid


【解决方案1】:

根据this 文章,将复选框设置为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);
});

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

【讨论】:

  • 我检查了你的代码,它的工作方式和你上面提到的一样。但问题是如何获取选定的状态并将其保存在数据源中?
  • 对,正如我所说,问题是由于第三个状态在 HTML 中无效,因此使用复选框禁用了刷新。我想到的唯一想法是使用一些 fake 复选框
  • 顺便说一句,我找到了一个解决方案来选择复选框的三态,但是如何在剑道网格中应用它..我坚持这个..这是解决方案的链接jsfiddle.net/chriscoyier/mGg85/2跨度>
  • 这是最简单的部分 :-) 我的第一部分代码就是这样做的。问题是当您更新模型时,它会重新绘制复选框并且您会失去不确定
  • 但我需要知道如何获取复选框的选定状态(如真、假或不确定)并通过单击按钮传递给数据源..你能告诉我如何获取这样的状态..
猜你喜欢
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多