【问题标题】:Extjs, delete buttonExtjs,删除按钮
【发布时间】:2010-11-28 20:22:11
【问题描述】:

在这个例子中:http://dev.sencha.com/deploy/dev/examples/grid/progress-bar-pager.html 如果我想放置一个删除按钮,在从网格中删除行之后,我如何从 myData 中更改或删除这条记录?因为当我更改页面或单击刷新按钮时,我的行/行已删除再次出现。有没有办法改变数据?

非常感谢

【问题讨论】:

    标签: extjs


    【解决方案1】:

    类似:

    var grid = ...; // Your grid.
    
    var button = new Ext.Button({
        text: 'Delete row',
        handler: function() {
            var record = grid.getSelectionModel().getSelected();
    
            if (record !== undefined) {
                grid.store.remove(record);
            }
        }
    });
    

    如果您希望真正删除数据,则网格应使用远程存储,从实际数据存储中加载和删除数据。以下仅表示本地更改:

    proxy: new Ext.ux.data.PagingMemoryProxy(myData),
    

    您可以尝试删除它并放入

    url: 'http://localhost/path/to/get/data'
    

    有关详细信息,请参阅文档:http://dev.sencha.com/deploy/dev/docs/?class=Ext.data.Store

    【讨论】:

    • 你的想法不错,但我想使用现金,我不想每次删除产品时都重新加载数据库。我还有一个功能,点击后从我的数据库中删除行,但我不想重新加载数据库。如果你有 10-20 个产品,那没关系,但如果你有 10.000 个......
    • @cosy 删除不应该(或至少不需要)导致重新查询。如果您假设删除有效,或者如果删除失败则恢复已删除的记录,那么@Kai 应该没问题。
    • 您始终可以放置一个保存按钮,该按钮将通过Ext.Ajax.request() 或通过store.save() 发送AJAX 请求。只需确保将商店的autoSave 设置为false,否则它将自动保存更改。
    • 我找到了使用这个 myData.splice (1,1) 的解决方案;
    【解决方案2】:

    如果您查看该示例的源代码,它会从硬编码的数组中加载数据:

    Ext.onReady(function(){
    
            var myData = [
                    ['3m Co',71.72,0.02,0.03,'9/1 12:00am'],
                    ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],
                    ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'],
                    // ...
                    ['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am'],
                    ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am']
            ];
    

    myData 会在每次页面加载时从该静态定义中重新创建,这就是为什么在刷新之间更改不会持续存在的原因。

    您需要编写两个服务器端脚本(例如 PHP 脚本)。一种以 JSON 或 XML 格式输出未删除记录的数据。另一个按 ID 从数据库中删除记录。

    这里有一个教程,其中包括编写“getter”PHP 脚本和相应的 Ext JS 代码以显示技术产品上的数据网格:http://www.devarticles.com/c/a/JavaScript/EXT-JS-Passing-Live-Data/。这仅涵盖第一个脚本(从数据库中检索数据并以 JSON 格式输出的脚本),但它应该可以帮助您进行。考虑使用向第二个脚本(按 ID 从数据库中删除记录的脚本)发出 AJAX 请求的函数来覆盖商店的 remove 回调。

    【讨论】:

      【解决方案3】:

      这是解决方案 myData.splice (1,1);

      【讨论】:

        猜你喜欢
        • 2015-07-24
        • 2016-03-07
        • 2014-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-06
        • 2021-11-18
        • 1970-01-01
        相关资源
        最近更新 更多