繁体   English   中英

如何在extjs 4.2中为带有远程存储的组合框设置值

[英]How to set value to combobox with remote store in extjs 4.2

在Extjs 4.2中将值设置为组合框应遵循的正确方法是什么。 在Extjs 4.2之前,带有远程存储的组合框是使用以下代码设置的。

var book= Ext.create('Test.model.Book', bookValues);
bookCombo.store.loadRawData([book]);
bookCombo.setValue(book.getId());
bookCombo.setRawValue(book.get('name'));
bookCombo.displayTplData = book.data;
bookCombo.fireEvent('change', bookCombo, book.getId());

但是上面的代码从4.2开始就没有正确设置远程组合的值。

这让我发疯,但最终我有了解决方案。

首先,您必须为商店定义一个模型,然后可以使用新的模型实例设置值。

// model
      Ext.define('UserSearchFieldModel', {
        extend: 'Ext.data.Model',
        fields: [
          {name: 'user_id',  type: 'string'},
          {name: 'displayname', type: 'string'}
        ]
      });

// store
      UserSearchField_Store = Ext.create('Ext.data.Store', {
        model: 'UserSearchFieldModel',
        remoteFilter: true,
        proxy: {
          type: 'ajax',
          url: '...',
          reader: {
            type: 'json',
            root: 'userList'
          }
        }
      });

// field
    {
      itemId: 'userField',
      xtype: 'combo',
      queryMode: 'remote',
      hideTrigger: true,
      store: UserSearchField_Store,
      displayField: 'displayname',
      valueField: 'user_id'
    }

// set a initial value on load
    this.down('#userField').setValue(Ext.create('UserSearchFieldModel', {
      id: initialUser.id,
      displayname: initialUser.name
    }));

我认为在加载数据bookCombo.setValue(book.getId()); 应该足以在您的组合中设置值。 设置值后,更改事件应自动触发。 其余的在调用setValue之后自动被调用

我想你自己打个电话就搞砸了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM