3

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

    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,上面是我面板上按钮“更新”的单击事件的处理程序。

请问我该怎么做?

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 回答