1

ツールバーに「CheckAll」と「UncheckAll」の 2 つのボタンを導入しました。これらのボタンは、グリッドの「ステータス」(チェックボックス付き) という特定の列に影響を与えます。これを行うために、2 つの 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 に答える