2012-04-17 76 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