Dojo 基于行内容显示或隐藏DGrid选择器
我将Dgrid选择网格用于使用复选框选择内容的网格。但是,树的唯一子节点应该显示复选框,因为父节点只是类别,无法选择。在此之前,我使用了编辑器插件,但它在清除选择时造成了困难(具体来说,网格的“clearSelection”方法没有任何作用)。我切换到选择器插件,所以现在选择和取消选择行可以正常工作,但现在我似乎无法找到一种方法来隐藏某些行上的复选框,而不是其他行上的复选框 原始代码Dojo 基于行内容显示或隐藏DGrid选择器,dojo,grid,selection,selector,dgrid,Dojo,Grid,Selection,Selector,Dgrid,我将Dgrid选择网格用于使用复选框选择内容的网格。但是,树的唯一子节点应该显示复选框,因为父节点只是类别,无法选择。在此之前,我使用了编辑器插件,但它在清除选择时造成了困难(具体来说,网格的“clearSelection”方法没有任何作用)。我切换到选择器插件,所以现在选择和取消选择行可以正常工作,但现在我似乎无法找到一种方法来隐藏某些行上的复选框,而不是其他行上的复选框 原始代码 var columns = [ editor({ label: " ",
var columns = [
editor({
label: " ",
field: "itemSelected",
sortable: false,
width: 33,
canEdit: function(object) {
// only add checkboxes for child objects
return object.type === "child";
}
}, "checkbox"),
tree({
label: "Item",
field: "shortItemId",
width: 150,
shouldExpand: function() {
return 1;
}
}),
{
label: "Grouping Name",
field: "groupingName"
}
];
var itemGrid = new SelectionGrid({
store: itemStore,
style: {
width: '99%',
height: '99%'
},
columns: columns,
sort: [{attribute: "shortItemId", descending: false}]
});
我使用编辑器的“editOn”参数来隐藏复选框,但是选择器插件只有“disabled”参数,它根本不隐藏字段
有没有办法像使用编辑器一样使用选择器隐藏复选框?查看
dgrid/selector
源代码,似乎总是创建输入并将其添加到DOM中,而不管它是否已被禁用。这大概是为了让它足够灵活,能够动态启用和禁用复选框,而无需不断地重新创建DOM节点。虽然无法阻止渲染这些节点,但可以使用CSS隐藏它们,因为单元格节点被赋予了一个格式为field-{fieldName}
(或者在这种特殊情况下,fielditemselected
)的类:
// JavaScript
var columns = [
selector({
label: " ",
field: "itemSelected",
sortable: false,
width: 33,
// Disable any checkbox that is not of type "child"
disabled: function (item) {
return item.type !== 'child';
}
}),
...
];
/* CSS */
.field-itemSelected input[disabled] {
display: none;
}