Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
Javascript 通过ExtJS 3.0中EditorGridPanel的XmlHttpRequest自动保存?_Javascript_Gridview_Extjs - Fatal编程技术网

Javascript 通过ExtJS 3.0中EditorGridPanel的XmlHttpRequest自动保存?

Javascript 通过ExtJS 3.0中EditorGridPanel的XmlHttpRequest自动保存?,javascript,gridview,extjs,Javascript,Gridview,Extjs,我在Ext JS 3.0中有一个EditorGridPanel,通过HttpProxy和JsonReader填充,还有一个可编辑的列“working”--我可以编辑该值并将其标记为dirty 现在,在编辑单元格后,如何让它向服务器发送一个XmlHttpRequest,其中包含一些基本参数、行的ID字段、更改的列名称和新值 一旦发出请求,服务器端更新就很容易了。但是谷歌和挖掘内存中微不足道的EditGridPanel示例并不能帮助EditGridPanel打电话 我不想要的是: REST——只需通

我在Ext JS 3.0中有一个EditorGridPanel,通过HttpProxy和JsonReader填充,还有一个可编辑的列“working”--我可以编辑该值并将其标记为dirty

现在,在编辑单元格后,如何让它向服务器发送一个XmlHttpRequest,其中包含一些基本参数、行的ID字段、更改的列名称和新值

一旦发出请求,服务器端更新就很容易了。但是谷歌和挖掘内存中微不足道的EditGridPanel示例并不能帮助EditGridPanel打电话

我不想要的是:

  • REST——只需通过普通GET或POST更新即可
  • 插入新记录或删除行--仅暂时更新
  • 批量更新--一次只编辑一个单元格
  • 一堆代码——这应该很简单,就像Scriptaculous中的Ajax.InPlaceEditor一样

  • 您可以对Ext.grid.EditorGridPanel使用afteredit事件,该事件将在编辑器模糊后触发。您还可以在触发beforeedit事件时设置定期(间隔)检查方法,并在触发afteredit事件时清除该方法

    后编辑示例:

    EditorGridPanel.getColumnModel().getCellEditor(column).on('afteredit', function() {
        //do ajax call for the update.
    });
    

    如果您需要周期检查的示例,请告诉我,我会写一个。

    我终于找到了。。。我的商店需要一个作家:

    var ds = new Ext.data.JsonStore({
        autoSave:       true,
        url:            "ajax-handler.aspx",
        method:         "POST",
        timeout:        120000,
        root:           "rows",
        totalProperty:  "results",
        idProperty:     "primarykeyvalue",
        fields:         previewColumnConfig,
        baseParams:     {
            now:        (new Date()).getTime()
            },
        writer: new Ext.data.JsonWriter({
            encode:     true,
            listful:    false
            })
        });
    
    注:

    • “现在”baseparam是为了绕过“一些浏览器”(猜测一下)对AJAX结果的缓存
    • “encode”在POST中返回POST变量,而不仅仅是一个简单的JSON结果
    • 禁用“listful”是因为用户一次只编辑一行/列,不需要设计服务器端解析器来引入数组,它只需要一行
    • 是的,我有一个很长的超时值
    • previewColumnConfig预先定义,存储我的列定义

    这是我一直在考虑的选择,但感觉有些不对劲。也许我给ExtJS的人太多的信任了,但是如果没有一种简单的方法告诉网格将请求本身发送到某个指定的URL,并使用服务器的ACK/NAK响应清除脏标志,我会感到惊讶。有一个“autosave”配置选项,但我似乎不能做任何其他需要为我做的工作。毕竟,就在主页上,“Direct、CRUD和REST支持流线型服务器通信”是宣传的功能。这三种方法中肯定有一种涉及到一个简单的服务器调用?