2012-04-17 75 views
0

论坛成员我有一个问题是显示组合框名称选择值到我的gridpanel列。如何显示多选从组合框到网格面板的值extjs 4

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

是我与列组合框 GridPanel中列

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

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 

}); 

在这里我得到的资源列表,我可以做多选也GridPanel中柱。基于这个多重选择的ID发送到服务器,并与我想要设置值的网格列的响应。

但是,错误的是我得到了服务器的正确响应,但我的网格列在此列中只显示一个名称。

我想显示选择的所有资源,用逗号标志仙人,瑜伽师,西仁等

解决方案 只是改变与的GridColumn分离的名字下面的代码

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'} 

      ] 

}); 

上面的解决方案适用于我,希望这可能会有所帮助。

感谢您的支持。

回答

0

您已指定显示在组合框上的名称为'firstname',并且此字符串将对应于其下面的值(即'id')的1-1。如果你认为它不工作的方式,只是觉得这些:

  • 如何如果选择多项目“选定项目”将在下拉列表中显示,该组合框是不是在“焦点”状态? (组合将显示所选项目的一个随机数,或将它们列在菜单中?)
  • 如果再次单击组合框以选择其他项目后,将如何重新显示“选定项目”? (如果选择了多个项目,你会如何描述所有资源都显示相同的所有资源名称,用逗号分隔,如rishi,yogi,hiren)

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

+0

感谢您的回复,我的问题已解决。以上是我的解决方案 – 2012-04-17 09:39:04