将数据发送回应用程序

时间:2012-09-26 15:18:46

标签: extjs

我对EXTJS很新,所以我还没有完全理解它是如何工作的,但是我设法构建一个由select选择的网格(因此它不直接映射到表)。该网格的一列是ID。我还在网格中添加了一个复选框

    this.columns =
    [
        {
            header: 'Selected',
            dataIndex: 'Selected',
            xtype: 'checkcolumn'
        },
        ....rest of the columns

在我的模特上我有:

fields:
[   
    { name: 'Selected', type: 'bool' },
    { name: 'ID', type: 'int' },
     ...rest of the fields

我需要的是,点击一个按钮(已经添加),获取Selected属性设置为true的ID列表。

任何想法我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

这很简单(如果我理解你的话),网格有selection model来处理这些选择。您只需获取选择模型并获取所有selected条记录。

每个选项都会触发itemclickselectionchange个事件。第二个给出了一系列选定的记录。

我想Ext.selection.CheckboxModel也可能对你感兴趣。

修改

好吧我猜以上都不是你想要的,但可能很有趣。您需要的是迭代商店的所有记录,可以使用store.each()完成。在您的按钮范围内执行此操作并将数组。实施例

var myGrid = Ext.getCmp('MyGrid');
var list = [];
myGrid.store.each(function(rec) { 
    if(rec.data.Selected)
        list.push(rec);
    return true;
});

要获取当前选定的记录(模型),请执行以下操作:

var myGrid = Ext.getCmp('MyGrid'),
    sm = myGrid.getSelectionModel(),
    selection = sm.getSelection(), // gives you a array of records(models)
    len = selection.length, 
    i = 0, 
    idList = []; 

for (; i<len; i++) { 
   idList.push(selection[i].data.ID); 
}