2013-11-30 4 views
5

Im пытается отобразить выбранную строку в JQgrid. Теперь у меня есть этот код:Как узнать JQGrid multiselect 'select all' checkbox is checked

onSelectRow:function(rowid){ 
    var selectedRow = $('#mygrid').jqGrid('getGridParam', 'selarrrow'); 
    $("#totalSelected").val(selectedRow .length); 
} 

своей работой отлично, но потом, когда «выбрать все» флажок установлен, он не вызовет этот код, Eventhough в визуальных мы можем видеть, что все строки были выбраны ,

так я имею в виду, что, если я знаю, что «выбрать все» флажок, я могу установить общее выбранное значение, как это:

if(//selectall checkbox is checked) 
     $("#totalSelected").val($("#mygrid tr").length-1); 

Я попробовал этот код, отсылая к this answer , но им вполне уверен .Checked() не распознается:

if($("#cb_mygrid"[0].id).checked()) 
     $("#totalSelected").val($("#mygrid tr").length-1); 

Любая идея очень ценится

ответ

8

onSelectRow не срабатывает, когда флажок заголовка используется для Сель ect все элементы. Для захвата события Select All имеется отдельный обработчик событий. Из документации:

onSelectAll

Посылает Вам следующие параметры: aRowids, статус

This вызывается событие, когда MultiSelect опция истинна, то при нажатии на флажок заголовка. aRowids - это массив выбранных строк (rowid's). status - логическая переменная, определяющая флажок состояния заголовка - true, если флажок установлен, false, если не установлен. Обратите внимание, что массив aRowids всегда будет содержать идентификаторы, если флажок заголовка установлен или снят флажок.

Когда это событие срабатывает, в вашем случае, если вы хотите сделать следующее, чтобы показать правильное количество выбранных строк:

onSelectAll: function(aRowids, status) { 
    //Use a ternary operator to choose zero if the header has just been unchecked, or the total items if it has just been checked. 
    $("#totalSelected").val(status === false ? 0 : aRowids.length); 
}