2016-04-26 9 views
1

私は、フロントエンドとしてextjs 6.0.1を、プロジェクトでバックエンドコードとしてspringを使用しています。私は1つのUIまたはページを使用して、ツリーパネルを使用してデータを表示します。 以下は店舗コードとモデルコードです。extjsのツリーパネルのストアレコードと異なるセル値を表示する方法は?

Ext.define('SomeTreeStore', { 
extend: 'Ext.data.TreeStore', 
model: 'SomeTreeModel', 
autoSync: false, 
autoLoad: false, 
root: { 
    id: 0, 
    expanded: false, 
    description: 'SomeData' 
}, 
proxy: { 
    type: 'ajax', 
    writer: { 
     writeAllFields: true, 
     allowSingle: false, 
     rootProperty: 'children', 
     clientIdProperty: 'clientId' 
    }, 
    reader: { 
     type: 'json', 
     rootProperty: 'children', 
     successProperty: 'success' 
    }, 
    api: { 
     create: 'rest/test/adddata', 
     read: 'rest/test/getdata', 
     update: 'rest/test/updatedata', 
     destroy: 'rest/test/deletedata' 
    }, 
    headers: { 
     Accept: 'application/json', 
     'Content-Type': 'application/json;charset=utf-8' 
    } 
} 
}); 


Ext.define('SomeTreeModel', { 
extend: 'Ext.data.TreeModel', 
idProperty: 'id', 
identifier: 'negative', 
fields: [ 
    { name: 'id', type: 'int' }, 

    { name: 'item', type: 'string' }, 
    { name: 'data1', type: 'string' }, 
    { name: 'data2', type: 'number' }, 
    { name: 'unit', type: 'string' }, 
    { name: 'Rate', type: 'number' }, 
    { name: 'Amount', type: 'number' } 
] 
}); 

私はユニットのベース上のレートと量を表示する必要があります。例えば、 。ユニット== PMの場合は、ツリーパネルにレートと金額の値を表示する必要があります。それ以外の場合は空白の値を表示するか何も表示しないでください。

私は以下のコードを使用します。

{ 
    text: 'Amount', 
    flex: 1.5, 
    sortable: false, 
    dataIndex: 'Amount', 
    align: 'right', 
    renderer: function (value, metaData, record, rowIdx, colIdx, store, view) { 

     if(record.get('unit') == 'PM'){ 
      return Ext.util.Format.number(value, '0.00'); 
     }else{ 
      return ''; 
     } 
    } 

}  

しかし、このコードではストア値も更新されます。私が何かを更新するたびに、それは率と量の空白値でデータベースを更新します。

また、ユニットの値のベースでレートと金額を更新することも許可する必要があります。

トレパネルの値を店舗の値と異なるように表示してください。

答えて

1

このコードはどうですか?
セルの値とストアの間のバインドを避けるため、dataIndexプロパティは使用しません。

{ 
    text: 'Amount', 
    flex: 1.5, 
    sortable: false, 
    //dataIndex: 'Amount', 
    align: 'right', 
    renderer: function (value, metaData, record, rowIdx, colIdx, store, view) { 

     if(record.get('unit') == 'PM'){ 
      //return Ext.util.Format.number(value, '0.00'); 
      return Ext.util.Format.number(record.get('Amount'), '0.00'); 
     }else{ 
      return ''; 
     } 
    } 
} 

更新:
私は

を考慮するのを忘れたと私はまた、 単位値のベース上のレートと金額を更新することを可能にする必要があります。

以下のように、手動でストア値を更新する必要があります。

{ 
    text: 'Amount', 
    flex: 1.5, 
    sortable: false, 
    //dataIndex: 'Amount', 
    align: 'right', 
    renderer: function (value, metaData, record, rowIdx, colIdx, store, view) { 

     if(record.get('unit') == 'PM'){ 
      var FormattedAmount = Ext.util.Format.number(record.get('Amount'), '0.00'); 
      record.set('Amount', FormattedAmount); // Update the store manually. 

      return FormattedAmount; 
     }else{ 
      return ''; 
     } 
    } 
} 
+0

ありがとうございました宇野康之さんの作品です。店舗では影響を与えない総額と総額の値を更新すると、このコードに1つの問題があります。更新された価値を入手して店舗に設定する方法をお考えですか?私はextjsで新しいですが、これはあなたのために小さくなることがあります。 –

+0

@AnkitJain私は英語が上手ではないので、私は正しく理解していません... とにかく私は答えを更新しました。それがうまくいけば助かります –

+0

同じことをしたい。ありがとう。 –

関連する問題