Kendo网格更改行类不起作用

时间:2017-07-03 10:35:48

标签: kendo-ui kendo-grid

我有一个剑道网格,其中包含可供选择的复选框。 当我单击一个复选框时,我将行的类更改为" k-state-selected"并将行ID保存在

var checkedIds = [];

然后我有一个上下文菜单,我可以在其中选择要应用于该行的更改。

在这种情况下,我想更改所有行的值。这很有效。

然后,我有一段代码可以恢复之前选定的行。

private setCheckRows(checkedIds) {
            $.each(checkedIds, (index, value) => {
                $("#grid  tbody").find("tr").each(
                    function () {
                        if ($(this).closest("tr").attr("Id") === value) {
                            $(this).closest("tr").addClass("k-state-selected")
                                .attr("style", "background-color: rgb(51,121,181)")
                                .find(".checkbox")
                                .attr("checked", "checked");
                        }
                    });
            });
        }

它有效,但是它再次没有......

如果我选中一个复选框,则此位代码不执行任何操作

if ($(this).closest("tr").attr("Id").replace("task-row-", "") === value) {
                            $(this).closest("tr").addClass("k-state-selected")
                                .attr("style", "background-color: rgb(51,121,181)")
                                .find(".checkbox")
                                .attr("checked", "checked");

                    }

如果我选择两个或更多复选框,则它适用于除第一个以外的所有行。

因此除了第一行之外的所有行都将恢复为被选中并具有蓝色背景。

这确实是一种非常奇怪的行为。

有什么想法吗? 请事先提前。

1 个答案:

答案 0 :(得分:0)

我设法解决了。

我改变了这个

$.ajax({
                type: "POST",
                url: "/Cockpit/SetWorkflowStep",
                dataType: "json",
                data: JSON.stringify(newTaskStatus),
                contentType: "application/json"
            }).done(() => {
                $("#grid").data("kendoGrid").dataSource.read();
                this.setCheckRows(checkedIds); 
            });

进入这个

$.ajax({
                type: "POST",
                url: "/Cockpit/SetWorkflowStep",
                dataType: "json",
                data: JSON.stringify(newTaskStatus),
                contentType: "application/json"
            }).done(() => {
                $("#grid").data("kendoGrid")
                          .dataSource.read()
                          .done(() => { this.setCheckRows(checkedIds); });
            });

现在工作正常。