2011-01-27 3 views
2

Я пытаюсь получить работу сетки ExtJS, которая имеет флажки, из которых я могу получить массив строк/идентификаторов, поэтому я знаю, какие строки были проверены.Как запросить мою сетку ExtJS, чтобы проверить, какие флажки CheckboxSelectionModel() отмечены?

Я использовал this example from Sencha, чтобы получить следующую сетку, чтобы правильно отобразить с флажками выбора, но он не показывает , как получить информацию из сетки, которые были проверены строки, например У меня будет кнопка с функцией обработчика, и внутри этого мне нужно написать что-то вроде:

var rowIdsChecks = grid.getRowIdsChecked();

Как получить информацию из сетки, строки которой в настоящее время проверяются?

var myData = [ 
    [4, 'This is a whole bunch of text that is going to be word-wrapped inside this column.', 0.24, '2010-11-17 08:31:12'], 
    [16, 'Computer2', 0.28, '2010-11-14 08:31:12'], 
    [5, 'Network1', 0.02, '2010-11-12 08:31:12'], 
    [1, 'Network2', 0.01, '2010-11-11 08:31:12'], 
    [12, 'Other', 0.42, '2010-11-04 08:31:12'] 
]; 

var myReader = new Ext.data.ArrayReader({}, [{ 
     name: 'id', 
     type: 'int' 
    }, { 
     name: 'object', 
     type: 'object' 
    }, { 
     name: 'status', 
     type: 'float' 
    }, { 
     name: 'lastChange', 
     type: 'date', 
     dateFormat: 'Y-m-d H:i:s' 
    }]); 

var sm = new Ext.grid.CheckboxSelectionModel(); 

var grid = new Ext.grid.GridPanel({ 
    region: 'center', 
    style: 'margin: 10px', 
    store: new Ext.data.Store({ 
     data: myData, 
     reader: myReader 
    }), 
    cm: new Ext.grid.ColumnModel({ 
     defaults: { 
      width: 120, 
      sortable: true 
     }, 
     columns: [ 
      sm, 
      { 
       header: 'ID', 
       width: 50, 
       sortable: true, 
       dataIndex: 'id', 
       hidden: false 
      }, 
      { 
       header: 'Object', 
       width: 120, 
       sortable: true, 
       dataIndex: 'object', 
       renderer: columnWrap 

      }, { 
       header: 'Status', 
       width: 90, 
       sortable: true, 
       dataIndex: 'status' 
      }, 
      { 
       header: 'Last Updated', 
       width: 120, 
       sortable: true, 
       renderer: Ext.util.Format.dateRenderer('Y-m-d H:i:s'), 
       dataIndex: 'lastChange' 
      }] 
    }), 
    sm: sm, 
    viewConfig: { 
     forceFit: true 
    }, 
    title: 'Computer Information', 
    width: 500, 
    autoHeight: true, 
    frame: true, 
    listeners: { 
     'rowdblclick': function(grid, index, rec){ 
      var id = grid.getSelectionModel().getSelected().json[0]; 
      go_to_page('edit_item', 'id=' + id); 
     } 
    } 
}); 

Решение:

Благодаря @jujule, этот код работает:

Ext.select('span#internal_link_001').on('click', function() { 
    var selections = grid.getSelectionModel().getSelections(); 
    console.log(selections); 
}); 

, а затем у вас есть иды так:

enter image description here

ответ

8

CheckboxSelectionModel отвечает за отслеживание и управление выборами.

Просто используйте свой метод getSelections(), чтобы получить массив выбранных записей:

grid.getSelectionModel().getSelections() 
1

Если была загружена сетка сказать, а затем использовать.

<script type="text/javascript" language="javascript"> 
function ValidateCheckBoxChecked() { 
    var count = 0; 
    var counter = 0; 
    var ChkBoxValue; 
    var checkboxList = document.getElementById("divGridData").getElementsByTagName("input"); 
    for (var i = 0; i < checkboxList.length; i++) { 
     if (checkboxList[i].checked) { 
      counter++; 
     } 
    } 
    return counter; //this will return the number of checkBoxed checked. 
} 
</script> 
Смежные вопросы