如何根据其他记录查找记录?

时间:2019-05-13 05:03:14

标签: database extjs store

我正在像这样从数据库中检索一些值:

var data = new Ext.create('Ext.data.Store',{
                                fields: [

                                        {name:'code',mapping: 'CODE'},{name:'code_company',mapping: 'COD_COMP'}, 
                                        {name:'descriptionCompany',mapping: 'DESC_COMP'}, {name:'group',mapping: 'GRP_GRP'},                                        

                                ],
                                autoLoad: false,
                                remoteSort: true,
                                proxy: {               
                                    type: 'ajax',
                                    url: 'index.php?Control=GeneralData&Accion=companyData', // this is the Store Procedure from I am getting the data
                                },

                            });

        data.load();

我正在从数据库中获得此​​信息:

GRP_GRP | CODE | COD_COMP | DESC_COMP
   1        1       1         APPLE
   1        1       2       MICROSOFT
   1        1       3          HP
   1        2       1        SAMSUNG
   1        2       2         NOKIA
   1        2       3         BLUE


到目前为止,一切都很好。当我尝试从该响应中获取特定记录时,就会出现我的问题。

我的意思是,我试图从这样的响应中获取描述(诺基亚):

var record = data.findRecord('code_company', 2);

该代码的输出是“ MICROSOFT”,而不是我想要的诺基亚,但我已经知道为什么会这样。我需要在搜索中更加具体,但这就是我不知道该怎么做。

我以一种形式设置2个组合框,从中我可以从用户那里获得组和代码。我将这些值保存在2个变量中。

现在,我需要的是一段代码,可以让我根据用户选择的组和代码来查找记录。

例如,如果用户选择了组1和代码2,我希望能够显示这些参数内的任何记录

1 个答案:

答案 0 :(得分:1)

您可以使用与过滤功能一起使用的QueryBy,以便获取与该功能匹配的所有记录。

var records = store.queryBy(function(record, id) {
    return (record.get('code_company') == 2 &&
        record.get('code') == 2);
}).items;

然后,您可以获取每个记录的

records.forEach(record=>{
 console.log('Company Name', record.get('descriptionCompany'));
})