0

论坛成员我遇到的一个问题是将组合框名称选择的值显示到我的网格面板列。

我的 gridPanel 有一列包含资源组合框,用户可以从资源中选择多个值。

下面是我的 gridpanel 列与列组合框 gridpanel 列

{
             xtype: 'gridcolumn',
             dataIndex: 'resourceid',
             text: 'Resource',
             field: resourcecombo
        },

资源组合

var resourcecombo = new Ext.form.ComboBox({
     id: 'resourceid',
     name: 'resourceid',
     emptyText: 'Select resource',
     displayField: 'firstname',
     store: Ext.create('rms.store.employee'),
     valueField: 'id',
     multiSelect: true,
     queryMode: 'local',
     typeAhead: true

});

在这里,我得到了资源列表,我也可以进行多选。基于此多选,将 id 发送到服务器,并且响应我想将值设置为网格列。

但是,我从服务器获得了正确的响应,但我的网格列在此列中仅显示一个名称。.

我想显示所有选定资源的名称,以逗号分隔rishi、yogi、hiren 等

解决方案 只需使用以下代码更改网格列

xtype: 'gridcolumn',
             dataIndex: 'resources',
             header: 'Resources name',
             field: resourcecombo,
             renderer: function(resources){
                var result = [];
                resources = resources || [];
                for (var idx = 0, len = resources.length; idx < len; idx++ ){
                    var value = resources[idx].name;
                    if(value){
                        result.push(value);
                    }
                }
                return result.join(', ');
            }

并使用以下代码更改模型

Ext.define('rms.model.taskmainModel', {
    extend : 'Ext.data.Model',

    fields : [ 
               { name : 'id', type : 'int' }, 
               { name : 'taskname', type: 'string'},
               **{ name : 'resources', type: 'auto'},**
               { name : 'cmpname', mapping: 'project.company.cmpname'}

             ]

});

上面的解决方案对我有用,希望这可以帮助一些人。

谢谢你的支持。

4

1 回答 1

0

您已指定组合框上显示的名称为“firstname”,该字符串将 1-1 对应于其下方的值(即“id”)。如果您认为它不适合您,请考虑以下几点:

  • 如果选择了多个项目并且此组合框未处于“焦点”状态,“所选项目”将如何显示在组合框上?(组合将随机显示一个所选项目,还是将它们列为菜单?)
  • 再次单击组合框选择其他项目后,“已选择项目”如何重新显示?(如果选择了多个项目,它们是否都显示相同的“所选资源的名称,以逗号分隔,如您所描述的 rishi,yogi,hiren”?)

所以我建议选择其他方式,例如:使用另一个字段来显示逗号分隔的名称

于 2012-04-17T08:43:38.560 回答