无法在EXTJS中填充组合框标签

时间:2013-07-05 08:55:21

标签: extjs4 extjs4.2

我使用的是Extjs 4.2,我的页面上有一个组合框字段。当我更新此页面时,我需要在组合框中显示所选值。如果我使用静态数据它将正常工作,但是当我从数据库加载数据时,数据即将到来,但它显示所选组合框的值(而不是标签)。

我已经使用组合框的select方法完成了这项工作,但我需要迭代商店以获取所选值。商店值不是从1开始,而是从100开始,组合框的select方法使用列表的索引。

以下是您可以检查的代码,但这不适用于多个组合框。

var specilizationComboBox = Ext.getCmp("doctorMasterVO.specilizationFkId");

var specilizationValue = 0;

specilizationStore.each(function (record) {
    if (record.get('value') != dataRead.dataVO.doctorMasterVO.specilizationFkId) {
        specilizationValue = specilizationValue + 1;
    }
    else {
        return false; 
    }
});

specilizationComboBox.select(specilizationComboBox.store.data.items[specilizationValue]);

请告诉我还有其他方法可以做到这一点,因为迭代整个商店并不是一个好主意。

1 个答案:

答案 0 :(得分:0)

查看以下方法:

find

findBy

findRecord

findExact

基本上你想要做的是这样的事情:

var myId = dataRead.dataVO.doctorMasterVO.specilizationFkId;
var record = store.findRecord("id", myId);
specilizationComboBox.select(record);

其中“id”是您尝试在商店中找到匹配项的字段的名称。 请注意,如果记录不存在或者商店未正确已加载,则myRecord可能为null。

要确保加载商店,您可以在加载处理程序中执行上面的代码:

specilizationComboBox.getStore().load({
    scope: this,
    callback: function(records, operation, success) {
      //code goes here
    }
});

如果您不确定商店是否已加载,您可以查看getCount方法。