代码之家  ›  专栏  ›  技术社区  ›  cosy

extjs,删除按钮

  •  0
  • cosy  · 技术社区  · 14 年前

    在本例中: http://dev.sencha.com/deploy/dev/examples/grid/progress-bar-pager.html 如果我想放置一个删除按钮,那么从网格中删除行后,如何更改或从mydata中删除该记录?因为当我更改页面或单击“刷新”按钮时,我删除的行再次出现。是否有更改数据的解决方案?

    多谢

    3 回复  |  直到 14 年前
        1
  •  4
  •   Tower    14 年前

    类似:

    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

        2
  •  1
  •   Daniel Trebbien    14 年前

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

    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格式输出数据的脚本),但它应该能让您继续工作。研究如何覆盖 remove 使用向第二个脚本(按ID从数据库中删除记录的脚本)发出Ajax请求的函数对存储进行回调。

        3
  •  0
  •   cosy    14 年前

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