我正在使用带有分层数据的CheckboxFormatter
插件。问题是,如果我检查折叠组然后展开它,默认情况下不会选择子行(selectedCellCssClass
未应用)。我是使用SlickGrid的新手。但这就是我认为控制应该流动的方式:
如果有人能指出我所使用的特定事件,属性,那将是一个很好的起点。我提到的步骤也只是一个猜测:D对实际过程的任何帮助都将非常感激。
谢谢!
答案 0 :(得分:1)
我最终在不使用CheckboxFormatter
的情况下提供了自己的复选框实施。我在我的数据模型中添加了checked
属性,每当检查一行时,我都会递归地更改所有受影响的行的状态。
var
$target = $(event.target),
isChecked = $target.is(":checked"),
id = dataContext['id'],
item = dataView.getItemById(id),
children = getChildren(id), // helper method to get children for curr
parent = getParent(id); // helper method to get parent for curr
dataContext['checked'] = isChecked;
dataView.updateItem(dataContext['id'], dataContext);
// loop through all children recursively
while (children && children.length > 0) {
var item = children.shift();
item.checked = isChecked;
dataView.updateItem(item.id, item);
var _children = getChildren(item.id);
if (_children && _children.length > 0)
children = [].slice.call(_children).concat(children);
}
// traverse up the hierarchy
while (parent && parent.id != config.currentUser) {
if (!isChecked) {
parent.checked = isChecked
dataView.updateItem(parent.id, parent);
} else {
// if all siblings are checked, change state of parent.
var siblingsChecked = true;
$.each(getChildren(parent.id), function (index, item) {
if (!item.checked)
siblingsChecked = false;
});
if (siblingsChecked) {
parent.checked = isChecked;
dataView.updateItem(parent.id, parent);
}
}
parent = dataView.getItemById(parent.parentId);
}
然后,我必须覆盖getItemMetaData方法,为所有已检查的行返回特定的css类。
dataView.getItemMetadata = function (index) {
var item = dataView.getItem(index);
if (item.checked === true) {
return { cssClasses: 'slick-row-selected' };
}
};