1

我在工具栏上引入了两个按钮,一个是“CheckAll”,另一个是“UncheckAll”,它们将对网格中的特定列产生影响,例如“状态”(带有复选框)。为此,我编写了两个 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 时,它会检查所获取行的状态列中的所有复选框,然后“保存”将所有更改保留到数据库中。

4

1 回答 1

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

于 2014-10-19T06:06:08.563 回答