1

如何在数据存储中搜索特定记录?我试过 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'}
      ])
});
4

2 回答 2

3

您的配置有几个问题。首先id读取的-property应该是idProperty-property。商店的-propertyid应该是storeId-property (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'));
    }
});
于 2011-03-31T13:30:12.673 回答
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'}
    ]
})
于 2011-03-31T01:47:58.597 回答