如何在ExtJS中的Triggerfield弹出窗口中放置一个组件?

时间:2013-12-31 03:53:04

标签: extjs sencha-architect

有没有办法在Trigger Field点击时实现组件弹出窗口?例如,我有一个Trigger Field,当我点击Triggerfield时我想显示一个Tree Grid。当我从树网格中选择一个值时,触发字段也设置相同的值。 Ext.Net中有一个与此类似的例子:http://examples.ext.net/#/Form/DropDownField/Overview/

enter image description here

我使用Sencha Arhitect 3和ExtJS 4.2。任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:5)

试试这个。

Ext.create('Ext.form.ComboBox', {   
    store: Ext.create('Ext.data.Store', {
    fields: ['group_name', 'property'],
    data: [{
        "group_name": "Armed Clash",
        "property": "Border Clash"
    }, {
        "group_name": "Armed Clash",
        "property": "Militia Clash"
    }, {
        "group_name": "Smuggling",
        "property": "Fuel"
    }, {
        "group_name": "Smuggling",
        "property": "Humans"
    }]
}),
listConfig: {
    tpl: Ext.create('Ext.XTemplate',
        '<ul><tpl for=".">',
        '<tpl if={group_name}>',
        '<tpl if="xindex == 1 || this.getGroupStr(parent[xindex - 2]) != this.getGroupStr(values)">',
        '<li class="x-combo-list-group"><b>{[this.getGroupStr(values)]}</b></li>',
        '</tpl>',
        '</tpl>',
        '<li role="option" class="x-boundlist-item" style="padding-left: 12px">{property}</li>',
        '</tpl>' +
        '</ul>', {
            getGroupStr: function (values) {
                return values.group_name
            }
        }
    )
},
queryMode: 'local',
valueField: 'property',
displayField: 'property',
renderTo: Ext.getBody()

});

使用js使列表可折叠,并使用样式添加图标。 可以参考这个小提琴http://jsfiddle.net/gilsha/82TzM/1/

或者使用Ext.ux.TreeCombo,小提琴:http://jsfiddle.net/gilsha/ZvnaM/83/

答案 1 :(得分:1)

如果我是你,我首先考虑使用一些现有的组件。

Base Treepicker在ExtJS框架中作为捆绑扩展存在 - Ext.ux.TreePicker

treepicker的另一个有用实现是用户扩展Ext.ux.TreeCombo

如果你想创建自己的选择器组件,它应该从Ext.form.field.Picker延伸 如需创建自己的选择器,您可以查看Ext.ux.TreePickerExt.picker.Date组件的源代码。

答案 2 :(得分:0)

感谢大家的回答,我找到了另一种解决方案:使用createPicker的{​​{1}}功能。例如,以下是我为Grid Picker扩展TriggerField的方法:

TriggerField

小提琴:https://fiddle.sencha.com/#fiddle/2fb 此自定义组件接受3 config:store,idDataIndex,nameDataIndex;所有这些都需要向网格显示数据。我认为您可以基于此扩展自己的选择器,例如Tree Grid Picker:)