最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ext JS 增删改 Ext.Net.Store详细教程
时间:2022-06-25 18:29:42 编辑:袖梨 来源:一聚教程网
本文内容
引入
演示用 Ext JS 增删改 Ext.Net.Store
说明
参考资料
引入
当我使用 Ext.Net 时,始终不能摆脱最初开发 asp.net 应用程序的方式,也就是,前后台的交互。当你用 asp.net 的思维方式,开发 Ext.Net 时,你会发现应用程序问题很多,我所见过的,比如,页面闪的厉害(刷新次数太多,虽然也是局部刷新);页面脚本错误;页面 CSS 错误等等。这充分说明,错误地使用了 Ext.Net。没有理解 Ajax。知道与会用往往是两回事。
现在,我既不想使用 asp.net 近乎全部刷新页面的方式(虽然可以完全做到局部刷新,但还是不够方便,尤其是对开发),也不想使用类似 jQuery+HTML 的局部刷新,因为这要写太多脚本。
Ext.Net 这个 Ajax 框架,提供了一个很好的方式。让你在脚本代码与后台代码做出权衡。因为,Ext.Net 是用 .Net 封装的 Ext JS,你可以使用 Ext.Net,也可以随意写 Ext JS 代码。
比如,用 Ext.Net 向页面拖放控件,而不是写一堆 Ext JS 脚本来创建,并在必要时,编写 Ext JS 脚本操作页面元素。所有操作都是前台进行,最后才发送给服务器端。
演示用 Ext JS 增删改 Ext.Net.Store
GridPanel 标记
假设页面有个 Ext.Net.GridPanel 和 Ext.Net.Store。但在页面初始化(第一次初始化)时,不加载任何数据,store 也没有 OnRefreshData 事件。
代码如下 | 复制代码 |
|
操作 store 的按钮标记
代码如下 | 复制代码 |
|
用 Ext JS 增删改 Store
代码如下 | 复制代码 |
add( Ext.data.Model[] records ) : Array addSorted( Ext.data.Model[] records ) : Array insert( Number index, Ext.data.Model[] records ) : void remove( Ext.data.Model/Array records, Object isMove ) : void removeAll( Boolean silent ) : void removeAt( Number index ) : void |
下面演示用 Ext JS 增删改 store。
代码如下 | 复制代码 |
var key = 0;
var data = [ [1, 33.33, "string_0", "2012-01-01", true], [3, 33.33, "string_1", "2012-01-01", false], [5, 33.33, "string_2", "2012-01-01", true], [7, 33.33, "string_3", "2012-01-01", false] ];
Ext.onReady(function() { Store1.proxy = new Ext.data.MemoryProxy(data), Store1.loadData(data, true); });
//var ds_model = Ext.data.Record.create([ // 'IntColumn', // 'DoubleColumn', // 'StringColumn', // 'DateTimeColumn', // 'BoolColumn' //]); var ds_model = Ext.data.Record.create([ { name: 'IntColumn', type: 'Int' }, { name: 'DoubleColumn', type: 'float' }, { name: 'StringColumn', type: 'String' }, { name: 'DateTimeColumn', type: 'Date' }, { name: 'BoolColumn', type: 'Boolean' } ]);
var yourAdd = function(store) { key++; key++; var newData = new ds_model( { IntColumn: key, DoubleColumn: (key * 100) / 3, StringColumn: "string_" + 99, DateTimeColumn: '1999-01-01', BoolColumn: false }) newData.commit(); store.add(newData); };
var yourAddSorted = function(store) { key++; key++; var newData = new ds_model( { IntColumn: key, DoubleColumn: (key * 100) / 3, StringColumn: "string_" + 99, DateTimeColumn: '1999-01-01', BoolColumn: false }) newData.commit(); store.addSorted(newData); };
var yourInsert = function(store) { key++; key++; var newData = new ds_model( { IntColumn: key++, DoubleColumn: (key * 100) / 3, StringColumn: "string_" + key, DateTimeColumn: '1999-01-01', BoolColumn: false }) newData.commit(); store.insert(0, newData); };
var yourRemove = function(store, grid) { var record = grid.getSelectionModel().getSelected(); if (record != undefined) { store.remove(record); grid.getSelectionModel().clearSelections(); } else { alert('未选择.'); } };
var yourRemoveAt = function(store, removeAtValue) { store.removeAt(removeAtValue); };
var yourRemoveAll = function(store) { store.removeAll(); };
var yourLoadData = function(store) { store.loadData(data); }; |
可以做个类比,Store 相当于 .net framework DataTable,而 Record 相当于 DataRow。
代码如下 | 复制代码 |
Ext.Net.Store(Ext.Net)/ Ext.data.Store(Ext JS)相当于 Syste.Data.DataTable Ext.Net.RecordField(Ext.Net)/ Ext.data.Recrod(Ext JS)相当于 System.Data.DataRow |
说明
官网 add 方法的原型是:add( Object data ) : Array。与 insert 方法不一样。按理说应该一样的。个人觉得官网笔误,试了半天报错。按 insert 的参数就没问题了。
其实,在我看来,用 Ext JS 直接操作 Ext.Net.Store 意义不大,除非你想把 store 单纯地作为一个数据缓存容器,不在页面呈现。因为,往往操作 grid 同时,就是在操作 store,而且通过 grid 操作 store,会在页面上看到数据式样的变化(当你编辑 grid 某列的数据后,其右上角有个红色三角)。
但是,了解直接操作 store,会加深通过 grid 操作 store 的理解。
本例的 store 是 ArrayReader,也可以使用 JsonReader。
代码如下 | 复制代码 |
|
但是数据需要改成类数组,而不是前面数组的数组。
代码如下 | 复制代码 |
var data = [ { IntColumn: 1, DoubleColumn: 33.33, StringColumn: "string_0", DateTimeColumn: "2012-01-01", BoolColumn: true }, { IntColumn: 3, DoubleColumn: 33.33, StringColumn: "string_1", DateTimeColumn: "2012-01-01", BoolColumn: false }, { IntColumn: 5, DoubleColumn: 33.33, StringColumn: "string_2", DateTimeColumn: "2012-01-01", BoolColumn: true }, { IntColumn: 6, DoubleColumn: 33.33, StringColumn: "string_3", DateTimeColumn: "2012-01-01", BoolColumn: false }, { IntColumn: 7, DoubleColumn: 33.33, StringColumn: "string_4", DateTimeColumn: "2012-01-01", BoolColumn: true } ]; |
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21