【发布时间】:2010-11-28 20:22:11
【问题描述】:
在这个例子中:http://dev.sencha.com/deploy/dev/examples/grid/progress-bar-pager.html 如果我想放置一个删除按钮,在从网格中删除行之后,我如何从 myData 中更改或删除这条记录?因为当我更改页面或单击刷新按钮时,我的行/行已删除再次出现。有没有办法改变数据?
非常感谢
【问题讨论】:
标签: extjs
在这个例子中:http://dev.sencha.com/deploy/dev/examples/grid/progress-bar-pager.html 如果我想放置一个删除按钮,在从网格中删除行之后,我如何从 myData 中更改或删除这条记录?因为当我更改页面或单击刷新按钮时,我的行/行已删除再次出现。有没有办法改变数据?
非常感谢
【问题讨论】:
标签: extjs
类似:
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
【讨论】:
Ext.Ajax.request() 或通过store.save() 发送AJAX 请求。只需确保将商店的autoSave 设置为false,否则它将自动保存更改。
如果您查看该示例的源代码,它会从硬编码的数组中加载数据:
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 回调。
【讨论】:
这是解决方案 myData.splice (1,1);
【讨论】: