ExtJS或MODext是一个很难记录的主题,所以我来这里寻求帮助。我有2个问题,都在同一个代码中。
基本摘要,我有一个页面,其中有2个标签显示来自2个不同自定义表格的信息。 2个选项卡(分别为:客户端,预算)显示良好,带有信息的网格几乎完全正确显示。几乎...
首先:我有一个扩展MODx.combo的组合,以用户名作为值显示用户的全名,并引用了Ext.util渲染器来显示值。在“预算”选项卡(第二个选项卡)上,此工作正常,但在“客户端”选项卡(第一个选项卡)上,显示不会呈现(双击时仍显示组合。这是我的代码......
首先是扩展名:
GR8.combo.User = function(config) {
config = config || {};
Ext.applyIf(config,{
id: 'user'
,name: 'user'
//,hiddenName: 'user'
,displayField: 'fullname'
,valueField: 'username'
,fields: ['fullname','username']
,pageSize: 20
,url: MODx.config.connectors_url+'security/user.php'
,typeAhead: true
,editable: true
});
GR8.combo.User.superclass.constructor.call(this,config);
};
Ext.extend(GR8.combo.User,MODx.combo.ComboBox);
Ext.reg('gr8-combo-user',GR8.combo.User);
接下来,客户网格的组合字段代码:
{
header: 'Agent'
,dataIndex: 'clientAgent' //equates to modx username
,sortable: true
,width: 60
,editor: { xtype: 'gr8-combo-user' ,renderer: true}
,renderer: Ext.util.Format.comboRenderer(GR8.combo.User, 'clientAgent')
}
最后,预算网格的组合字段代码:
{
header: 'Agent'
,dataIndex: 'budgAgent'
,sortable: true
,width: 60
,editor: { xtype: 'gr8-combo-user' ,renderer: true}
,renderer: Ext.util.Format.comboRenderer(GR8.combo.User, 'budgAgent')
}
我错过了什么,或者这里有什么问题不容易看到?
其次:当我对网格进行更改时,更改未保存 - 小红色三角形停留在网格中字段的左上角。我发现了一个保存按钮,我想我可以在MODx Gallery组件中使用它:
,formpanel: 'gr8-panel-home'
,buttons: [{
text: _('save')
,id: 'gr8-btn-save'
,process: 'mgr/gr8/update'
,method: 'remote'
,keys: [{
key: 's'
,alt: true
,ctrl: true
}]
}]
这会在页面上放置一个保存按钮(它也会复制搜索输入:()),但我想我还需要做些什么。有人能告诉我我需要什么吗请做什么?
答案 0 :(得分:0)
要直接从网格更新行后保存网格,需要将这两个参数添加到网格定义中:
,save_action: 'path/to/update/from/grid/processor'
,autosave: true
以下是updatefromgrid处理器的示例:https://github.com/modxcms/Tagger/blob/master/core/components/tagger/processors/mgr/tag/updatefromgrid.class.php
答案 1 :(得分:0)
在你的组合框中,你给它一个硬编码的“用户”ID。摆脱它,你应该准备好去。
ExtJS不处理具有相同ID的组件,因此第二次构建组合时,它只是吓坏了,不知道该怎么做。有时它会在共享ID时复制内容,有时它会抛出错误并且什么都不做。
@TheBoxer已经解决了你的第二个问题;添加autosave
和save_action
应该可以解决问题。