W2UI网格:选中的复选框不保存;

时间:2014-10-13 11:27:03

标签: javascript php jquery w2ui

我在工具栏上引入了两个按钮'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时,它会检查所获取行的状态列中的所有复选框,然后“保存”将所有更改保留到数据库中。

1 个答案:

答案 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