Как сделать запрос к моей сетке ExtJS, чтобы узнать, какие флажки CheckboxSelectionModel () отмечены? - PullRequest
2 голосов
/ 27 января 2011

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

I 'мы использовали этот пример из 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

Ответы [ 2 ]

8 голосов
/ 27 января 2011

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

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

grid.getSelectionModel().getSelections()
1 голос
/ 14 ноября 2011

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

<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>
...