3

こんにちは、グリッドに新しい行を挿入しようとしていますが、その 1 つの列は実際には 2 つの値の連結です。次のようなことをしたいと思います。

    var scopename = newScopeRef.down('textfield[id=scope_name]').getValue();
    var prodname = newScopeRef.down('combobox[id=prd]').getRawValue();
    var relname = newScopeRef.down('combobox[id=p_rls]').getRawValue();


 var editscopegrid = newScopeRef.down('gridpanel[id=editedscope_grid]'); //my grid
    editscopegrid.getView().getStore().removeAll();
    editscopegrid.getView().getStore().add({
                       name_scope : scopename,
                       prodrel : concat(prodrel + ',' prodname + ' ' + relname)});  
    editscopegrid.getView().refresh();

ご覧のとおり、グリッドの列の既存の値を、スペースで区切られたprodrelコンボボックスprodnameおよびの値と連結したいと思います。relname

私は MVC アーキテクチャで Extjs 4.x を使用しています。上記は、パネルの「更新」ボタンのクリック イベントのハンドラです。

どうすればこれを行うことができますか?

4

1 に答える 1

3

明示的なモデル定義がある場合はprodrel、関数を含むフィールドを追加convertして、そこで連結を行うことができます。

Ext.define('MyModel', {
    extend : 'Ext.data.Model', 
    fields : [
        'name_scope',
        'prodname',
        'relname',
        {
            name    : 'prodrel', 
            convert : function (v, rec) {
               return rec.get('prodname') + ' ' + rec.get('relname');
            }
        }
    ]
}

次に、次のようにストアにインスタンスを追加できます...

editscopegrid.getView().getStore().add({
                       name_scope : scopename,
                       prodname   : prodname,
                       relname    : relname});
于 2013-03-22T22:06:45.703 に答える