ExtJS搜索数据存储区的值

时间:2011-03-30 21:44:18

标签: search extjs find datastore findby

如何在数据存储中搜索特定记录?我尝试过find()和findBy(),但都返回-1。

var index = clientStore.find('ClientID', '37');

我有一个包含客户列表的组合框。我想要的是能够在该组合上设置默认值。我使用setValue正确设置了值,我甚至可以使用setRawValue设置显示值,但我似乎无法根据clientID查询数据存储区并获取要在setRawValue中使用的公司名称。

这有意义吗?

以下是针对以下问题的数据存储区代码(抱歉它不允许我将其粘贴在那里)

var frmClientStore = new Ext.data.Store({
    id: 'frmClientStore',
    proxy: new Ext.data.HttpProxy({
        url: 'url here', 
        method: 'POST'
    }),
    reader: new Ext.data.JsonReader({
        root: 'rows',
        id: 'recordID'
    },[
        {name: 'recordID', type: 'int', mapping: 'recordID'},
        {name: 'ClientID', type: 'int', mapping: 'clientID'},
        {name: 'CompanyName', type: 'string', mapping: 'companyName'}
      ])
});

2 个答案:

答案 0 :(得分:3)

您的配置存在一些问题。首先,读取的id - 属性应该是idProperty - 属性。商店的id - 属性应为storeId - 属性(不推荐使用id)。然后,当您在代码中引用frmClientStore时,您的变量称为clientStore(可能是拼写错误)。

var frmClientStore = new Ext.data.Store({
    storeId: 'frmClientStore',
    proxy: new Ext.data.HttpProxy({
        url: 'url here', 
        method: 'POST'
    }),
    reader: new Ext.data.JsonReader({
        root: 'rows',
        idProperty: 'recordID'
    },[
        {name: 'recordID', type: 'int', mapping: 'recordID'},
        {name: 'ClientID', type: 'int', mapping: 'clientID'},
        {name: 'CompanyName', type: 'string', mapping: 'companyName'}
      ])
});

最后:您确定,当您尝试从中检索记录时,您的商店已经加载了吗?

尝试

frmClientStore.load({
    callback: function(rs) {
        console.log(rs);
        console.log(this.find('ClientID', '37'));
    }
});

答案 1 :(得分:0)

您列出的方式应该是正确的。但是,我应该指出字段名称区分大小写。它也可能正在搜索字符串(如您所列)而不是数字(可能是您想要的)。

假设'ClientID'是正确的字段名称,您应该尝试以下操作:

var index = clientStore.find('ClientID', 37);

修改

另外,我刚刚注意到有关JsonReader的内容。不应该更像这样:

//...
reader: new Ext.data.JsonReader({
    root: 'rows',
    id: 'recordID'
    fields: [ //list fields here as part of the JsonReader
        {name: 'recordID', type: 'int', mapping: 'recordID'},
        {name: 'ClientID', type: 'int', mapping: 'clientID'},
        {name: 'CompanyName', type: 'string', mapping: 'companyName'}
    ]
})