2013-06-30 195 views
0

通过选择第一个组合框,其余值应显示在窗体中。通过选择第一个组合框,应显示其余值

我正在使用Extjs创建地址簿应用程序。

通过选择第一个组合框,其余值应显示在下面的窗体中。

下面是代码:

Ext.define('User', { 
    extend: 'Ext.data.Model', 
    fields: [{name:'id', type: 'int'}, 
      {name: 'FirstName', type: 'string'}, 
      {name: 'EmailAddress', type: 'string'}] 
}); 

user : [{"FirstName": "sssss", "EmailAddress": "[email protected]}, {"FirstName": "bbbb", "EmailAddress": "[email protected]"}] 

通过从组合框中选择EmailAddress的姓应显示在下面文本字段。

var cntry_panel = new Ext.Panel({ 
    header: false, 
    id: 'org-main', 
    layout: 'form', 
    labelWidth: 200, 
    border: false, 
    bodyStyle: 'padding:15px', 
    title: 'Select Country And State', 
    labelAlign: "right", 
    renderTo: Ext.getBody(), 
    items: [{ 
     xtype: 'combo', 
     fieldLabel: 'First Name', 
     id: 'Name', 
     store: user, 
     displayField: 'FirstName', 
     mode: 'remote', 
     width: 260, 
     forceSelection: true, 
     triggerAction: 'all', 
     emptyText: 'Select FirstName...', 
    }, { 
     xtype: 'combo', 
     fieldLabel: 'Email Address', 
     store: user, 
     mode: 'local', 
     width: 150, 
     forceSelection: true, 
     triggerAction: 'all', 
     selectOnFocus: true 
    }] 
}); 
+0

有几件事:首先,你的代码片段中既没有数据也没有“Homephone”的文本框(可能你在谈论“EmailAddress”?)。其次,我将从ComboBox的文档开始。 select事件传递选定记录的列表。您可以轻松地从所选记录中提取其他数据并使用它来填充其他字段。 – existdissolve

+0

我能够拉数据,但我想显示表单。 – sreekanth

+0

是“Emailaddress”,请你提供拉数据的例子。 – sreekanth

回答

0

首先,您的电子邮件地址字段可能应该是一个textfield,除非你有你正在使用该字段为combo值的列表。

接下来,给您的电子邮件字段itemId财产,如emailField,方便访问。

然后,在你的配置为名字字段,添加一个侦听器select事件:

{ 
    xtype: 'combo', 
    fieldLabel: 'First Name', 
    //...other properties... 
    listeners: { 
     select: function(combo, records) { 
      combo.up('#org-main').down('#emailField').setValue(records[0].get('email')); 
     } 
    } 
} 

你真的应该看看事件的文档上Ext.form.field.ComboBox,这是一个很常见的操作,将了解您是否会使用大量的ExtJS非常重要。 http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.ComboBox

+0

更改事件的正确参数是:{this},newValue,oldValue,eOpts – existdissolve

+0

您是对的,我打算输入'select',我已经编辑过这篇文章。 – kevhender

相关问题