2013-03-22 168 views
3

嗨兩個領域我想要在網格中插入新行,但它的一列實際上是兩個值的串聯,我想要做這樣的事情:串接在ExtJS的商店

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,上面是我的面板上按鈕「更新」的點擊事件處理程序。

我該怎麼做?

+0

也許我缺少的問題的東西,但你並不需要的功能來連接在Javascript中的字符串,你正在使用'concat'。只需使用'+'運算符。除非我錯過了這個Q關於這是上面代碼的唯一問題。 – Geronimo 2013-03-22 16:47:11

回答

3

如果您有明確的模型定義,您可以使用convert函數添加prodrel字段,並在其中進行拼接。

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});