2014-10-13 2 views
1

Я представил две кнопки на панели инструментов «CheckAll», а другой «UncheckAll», они должны воздействовать на конкретный столбец, в разделе «Состояние» (с флажками). Для этого я написал две функции Javascript.W2UI сетка: проверенные флажки не сохраняются;

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

Я думаю, что лучшим способом было бы прикрепить checkAll и снять отметку со всей сетки. Тогда его легче использовать. Я также изменил функцию рендеринга, чтобы сохранить статус обратно в записи сетки. Таким образом, это то, как вы можете добавить:

{ 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(); 

Однако, вам нужно будет получить все записи, идентификаторы, чтобы представить его на сервер, используйте getAllChecked для этого. Во второй мысли я не думаю, что вам нужно определить эти функции, поскольку они настолько коротки. Просто позвоните им напрямую, когда вам это нужно.

ПРИМЕЧАНИЕ: вы можете использовать grid.show.selectColumn = true. См. http://w2ui.com/web/docs/w2grid.show