ExtJS/MODx-CMP:网格编辑未保存到数据库,组合框未显示
ExtJS或MODext是一个很难的主题,文档很少,所以我来这里寻求帮助。我有两个问题,都在同一个代码中 基本概要,我有一个页面,有两个选项卡,显示来自两个不同自定义表的信息。两个选项卡(分别是:客户机、预算)显示良好,包含信息的网格几乎完全正确显示。几乎 首先:我有一个组合,它扩展了MODx.combo以显示用户名作为值的用户全名,并引用了Ext.util呈现程序来显示值。在“预算”选项卡(第2个选项卡)上,这可以正常工作,但在“客户端”选项卡(第1个选项卡)上,显示将不会显示(双击时组合仍会显示。以下是我的代码 首先是延长期限:ExtJS/MODx-CMP:网格编辑未保存到数据库,组合框未显示,extjs,combobox,extjs3,modx-revolution,datagridcomboboxcolumn,Extjs,Combobox,Extjs3,Modx Revolution,Datagridcomboboxcolumn,ExtJS或MODext是一个很难的主题,文档很少,所以我来这里寻求帮助。我有两个问题,都在同一个代码中 基本概要,我有一个页面,有两个选项卡,显示来自两个不同自定义表的信息。两个选项卡(分别是:客户机、预算)显示良好,包含信息的网格几乎完全正确显示。几乎 首先:我有一个组合,它扩展了MODx.combo以显示用户名作为值的用户全名,并引用了Ext.util呈现程序来显示值。在“预算”选项卡(第2个选项卡)上,这可以正常工作,但在“客户端”选项卡(第1个选项卡)上,显示将不会显示(双击时组合仍会
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
}]
}]
这会在页面上放置一个保存按钮(它也复制了搜索输入:(),但我想我还需要做一些事情。有人能告诉我需要做什么吗?要在直接从网格更新行后保存网格,需要将这两个参数添加到网格定义中:
,save_action: 'path/to/update/from/grid/processor'
,autosave: true
下面是updatefromgrid处理器的示例:在您的组合框中,您给它一个硬编码的id“user”。去掉它,您就可以开始了 ExtJS不处理具有相同ID的组件,因此在第二次构建组合时,它会感到异常,不知道该做什么。有时它在共享ID时会复制内容,有时会抛出错误,什么也不做
@Boxer已经解决了您的第二个问题;添加
autosave
和save\u action
应该可以解决这个问题。这两种方法都不起作用。我将与@TheBoxer一起解决save函数的问题。但是,组合框没有显示任何更改,只删除了其中一个组合框的id。组合框在第一个选项卡仍然没有显示在页面加载上,而第二个选项卡显示在页面加载上。只是确认一下,这个建议对组合框没有任何影响。有人有任何其他想法吗?这很有效-谢谢;Tagger中的示例非常有用。现在我遇到了一个问题,id字段没有命名为“id”,而是命名为“budgId”,MODx认为目前,该表没有id字段,因此它会抛出和出错错误,并且不会保存。如果您对此有任何想法,我将不胜感激。我已经在MODx论坛上发布了此消息:[link]。也许@MarkHamstra也会有线索……保存已解决,请参阅上面的链接,了解我如何重新定义主键。