之前正好实现过相应的功能,下面是我的代码
先说参数
第一个参数代表groupview分组的选中状态
第二个参数代表groupField中的值
第三个参数代表datagrid的id,如#dg
接下来说说思路
首先拿到datagrid的所有分组信息var groups = $(tableIdSelector).datagrid("options").view.groups;
然后遍历这些分组信息,根据value找到那个组,再根据checked控制分组内的数据的选中状态
实际上这段代码还有一个没有考虑到的问题,就是点击最上面groupview自带的全选checkbox时,分组中的checkbox不会选中,但分组内的checkbox会选中。。。实际上是我懒得弄了
function selectByGroup(checked, value ,tableIdSelector)
{
var groups = $(tableIdSelector).datagrid("options").view.groups;
var rows;
for (var i = 0; i < groups.length; i++)
{
if (groups[i].value == value)
{
rows = groups[i].rows;
break;
}
}
if (checked)
{
for (var i = 0; i < rows.length; i++)
{
$(tableIdSelector).datagrid("selectRow", $(tableIdSelector).datagrid("getRowIndex", rows[i]));
}
}
else
{
for (var i = 0; i < rows.length; i++)
{
$(tableIdSelector).datagrid("unselectRow", $(tableIdSelector).datagrid("getRowIndex", rows[i]));
}
}
}
谢谢,问题已解决
下面的ckb有独立的class或者其他的吗? 或者给每个组加class,。 然后在ckb的点击事件里写上 (".classname").prop("checked", true);
如果不能加class的话, 那就根据ckb的索引给这些东西来一个.prop("checked", true);
这个方法试过了,无法给每行的ckb自定义添加class