我在工具栏上引入了两个按钮'CheckAll'和另一个'UncheckAll',它们对特定列有影响,在网格中显示'Status'(带复选框)。我写了两个Javascript函数来做到这一点。
function check_all(the_unchecked){
for(i=0; i<the_unchecked.length; i++){
the_unchecked[i].checked = true;
}
}
function uncheck_all(the_checked){
for(i=0; i<the_checked.length; i++){
the_checked[i].checked = false;
}
} 受影响的领域:
{field: 'status', caption: 'Status', size: '50px', searchable: 'text', resizable: true, render: function (records) {
if (records.status === true) {
return '<span style="background-color:#a3e9a4; width:100%;display:block;"> <input class="enable_check" type="checkbox" name="enable_check[]" value="true" checked="true"></span>';
} else {
return '<span style="background-color:#f69988; width:100%;display:block;"> <input class="enable_check2" name="enable_check[]" value="false" type="checkbox"></span>';
}
}, style: 'text-align:center'},
问题是,当我点击“保存”按钮时,选中的按钮也不会发送/保存到数据库中。
我想要的是,当单击CheckAll时,它会检查所获取行的状态列中的所有复选框,然后“保存”将所有更改保留到数据库中。
答案 0 :(得分:2)
我认为最好的方法是将checkAll和uncheckAll附加到网格本身。然后它更容易使用它。我还修改了渲染功能,将状态保存回网格记录。所以,这是你可以添加的方式:
{ field: 'status', caption: 'Status', size: '50px',
render: function (record) {
return '<div style="text-align: center">'+
' <input type="checkbox" ' + (record.status ? 'checked' : '') +
' onclick="var obj = w2ui[\''+ this.name + '\']; obj.get('+ record.recid +').status = this.checked;">'+
'</div>';
}
}
然后我将这些功能添加到网格
checkAll: function () {
this.set({ status: true });
},
uncheckAll: function () {
this.set({ status: false });
},
getAllChecked: function () {
return this.find({ status: true });
}
您可以在定义网格列时添加。之后,您可以这样称呼它:
w2ui[grid_name].checkAll();
// OR
w2ui[grid_name].uncheckAll();
但是,您需要获取所有记录ID以将其提交给服务器,为此使用getAllChecked。在第二个想法,我不认为你需要定义这些功能,因为它们太短了。只需在需要时直接打电话。
注意:您可以考虑使用grid.show.selectColumn = true。见http://w2ui.com/web/docs/w2grid.show