我有一个剑道网格,其中包含可供选择的复选框。 当我单击一个复选框时,我将行的类更改为" 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");
}
如果我选择两个或更多复选框,则它适用于除第一个以外的所有行。
因此除了第一行之外的所有行都将恢复为被选中并具有蓝色背景。
这确实是一种非常奇怪的行为。
有什么想法吗? 请事先提前。
答案 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); });
});
现在工作正常。