Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS/MODx-CMP:网格编辑未保存到数据库,组合框未显示_Extjs_Combobox_Extjs3_Modx Revolution_Datagridcomboboxcolumn - Fatal编程技术网

ExtJS/MODx-CMP:网格编辑未保存到数据库,组合框未显示

ExtJS/MODx-CMP:网格编辑未保存到数据库,组合框未显示,extjs,combobox,extjs3,modx-revolution,datagridcomboboxcolumn,Extjs,Combobox,Extjs3,Modx Revolution,Datagridcomboboxcolumn,ExtJS或MODext是一个很难的主题,文档很少,所以我来这里寻求帮助。我有两个问题,都在同一个代码中 基本概要,我有一个页面,有两个选项卡,显示来自两个不同自定义表的信息。两个选项卡(分别是:客户机、预算)显示良好,包含信息的网格几乎完全正确显示。几乎 首先:我有一个组合,它扩展了MODx.combo以显示用户名作为值的用户全名,并引用了Ext.util呈现程序来显示值。在“预算”选项卡(第2个选项卡)上,这可以正常工作,但在“客户端”选项卡(第1个选项卡)上,显示将不会显示(双击时组合仍会

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也会有线索……保存已解决,请参阅上面的链接,了解我如何重新定义主键。