【问题标题】:Not able to populate combo box label IN EXTJS无法在 EXTJS 中填充组合框标签
【发布时间】:2013-07-08 16:00:40
【问题描述】:

我正在使用 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]);

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

【问题讨论】:

    标签: extjs4 extjs4.2


    【解决方案1】:

    看看这些方法:

    find

    findBy

    findRecord

    findExact

    基本上你想做的是这样的:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2017-10-08
      相关资源
      最近更新 更多