フォーラム メンバー コンボボックス名で選択した値が gridpanel 列に表示されるという問題が 1 つあります。
リソースコンボボックスを含む1つの列を持つ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 がサーバーに送信され、応答で値をグリッド列に設定したいと考えています。
しかし、何か問題があり、サーバーから正しい応答を得ていますが、私の gridcolumn はこの列に 1 つの名前しか表示しません。.
リシ、ヨギ、ヒレンなど、選択 したすべてのリソースの名前をコンマ記号で区切って表示したい
解決策 は、以下のコードで 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'}
]
});
上記の解決策は私にとってはうまくいきます。これが誰かの助けになることを願っています。
ご協力ありがとうございました。