连接Extjs商店中的两个字段

时间:2013-03-22 14:46:16

标签: gridview extjs store

您好我正在尝试在网格中插入一个新行,但其中一列实际上是两个值的串联,我想做这样的事情:

    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的现有值与组合框prodnamerelname的值相连,并以空格分隔。

我正在使用带有MVC架构的Extjs 4.x,上面是我面板上按钮“更新”的点击事件的处理程序。

我该怎么办呢?

1 个答案:

答案 0 :(得分: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});