0 0

store事件问题5

源代码:
<script type="text/javascript">    	
    	Ext.define('Order',{
    		extend:'Ext.data.Model',
    		fields:[
    			{name:"orderID",type:"int"},
    			"customerID","customerName",
    			"employeeID","employeeName",
    			{name:"orderDate",type:"date"},
    			{name:"requiredDate",type:"date"},
    			{name:"shippedDate",type:"date"},
    			"shipVia","companyName",
    			{name:"freight",type:"float"},
    			"shipName","shipAddress","shipCity","shipRegion","shipPostalCode",
    			"shipCountry"
    		],
    		idProperty:"orderID"
    	});
    	
    	Ext.define('Customer',{
    		extend:'Ext.data.Model',
    		fields:[
    			"CustomerID","CustomerName","ContactName",
    			"ContactTitle","Address","City","Region",
    			"PostalCode","Country","Phone","Fax"
    		],
    		idProperty:"CustomerID"
    	});
    	
    	Ext.define('Employee',{
    		extend:'Ext.data.Model',
    		fields:[
    			{name:"EmployeeID",type:"int"},
				"EmployeeName","Title","TitleOfCourtesy",
				{name:"BirthDate",type:"date"},
				{name:"HireDate",type:"date"},
				"Address","City","Region","PostalCode","HomePhone",
				"Extension","Photo","Notes",
				{name:"ReportsTo",type:"int"}
    		],
    		idProperty:"EmployeeID"
    	});
    	
    	Ext.define('Shipper',{
    		extend:'Ext.data.Model',
    		fields:[
    			{name:"shipperID",type:"int"},
				"companyName",
				"phone"
    		],
    		idProperty:"shipperID"
    	});
    	
    	Ext.onReady(function(){
    		if(Ext.BLANK_IMAGE_URL.substr(0,4)!="data"){
    			Ext.BLANK_IMAGE_URL="Images/s.gif";
    		}
    		//在此添加Ext JS代码
    		var customerStore = Ext.create("Ext.data.Store",{
    			firstLoad:true,
    			model:"Customer",
    			autoload:true,
    			pageSize :100,
    			proxy : {
    				type : 'ajax',
    				api:{
    					read:"test/GetCustomers"
    				},
    				reader:{
    					type:"json",
    					root:"data",
    					messageProperty:"Msg"
    				}
    			},
    			storeId:"CustomerStore",
    			listeners : {
    				datachanged:function(store,opts){
    					if(this.firstLoad){
    						delete this.firstLoad;
    						var list = [],
    						data = store.data.items,
    						ln = data.length;
    						for(i=0;i<ln;i++){
    							list.push(data[i].data.customerID);
    						}
    						Order.prototype.validations.push({type:"inclusion",field:"customerID",list:list});
    						Ext.getCmp("add").enable();
    					}
    				}
    			}
    		}).load();
    		
    		var employeeStore = Ext.create("Ext.data.Store",{
    			firstLoad:true,
    			model:"Employee",
    			autoload:true,
    			pageSize :100,
    			proxy : {
    				type : 'ajax',
    				api:{
    					read:"test/GetEmployees"
    				},
    				reader:{
    					type:"json",
    					root:"data",
    					messageProperty:"Msg"
    				}
    			},
    			storeId:"EmployeeStore",
    			listeners : {
    				datachanged:function(store,opts){
    					if(this.firstLoad){
    						delete this.firstLoad;
    						var list = [],
    						data = store.data.items,
    						ln = data.length;
    						for(i=0;i<ln;i++){
    							list.push(data[i].data.employeeID);
    						}
    						Order.prototype.validations.push({type:"inclusion",field:"employeeID",list:list});
    						Ext.getCmp("add").enable();
    					}
    				}
    			}
    		}).load();
    		
    		var shipperStore = Ext.create("Ext.data.Store",{
    			firstLoad:true,
    			model:"Shipper",
    			autoload:true,
    			pageSize :100,
    			proxy : {
    				type : 'ajax',
    				api:{
    					read:"test/GetShippers"
    				},
    				reader:{
    					type:"json",
    					root:"data",
    					messageProperty:"Msg"
    				}
    			},
    			storeId:"ShipperStore",
    			listeners : {
    				datachanged:function(store,opts){
    					if(this.firstLoad){
    						delete this.firstLoad;
    						var list = [],
    						data = store.data.items,
    						ln = data.length;
    						for(i=0;i<ln;i++){
    							list.push(data[i].data.shipVia);
    						}
    						Order.prototype.validations.push({type:"inclusion",field:"shipVia",list:list});
    						Ext.getCmp("add").enable();
    					}
    				}
    			}
    		}).load();
    		
    		var orderStore=Ext.create("Ext.data.Store",{
    			model : "Order",
    			pageSize :20,
    			remoteSort:true,
    			remoteFilter:true,
    			autoLoad:true,
    			proxy : {
    				type : 'ajax',
    				api:{
    					read:"test/opOrders?act=read",
    					create:"test/opOrders?act=add",
    					destroy:"test/opOrders?act=del",
    					update:"test/opOrders?act=edit"
    				},
    				reader : {
    					type : 'json',
    					root : 'data',
    					totalProperty: 'total'
    				},
    				writer:{
    					type:"json",
    					encode:true,
    					root:"data",
    					allowSingle:false
    				}
    			},
    			storeId : 'OrdersStore'
    		});
    		
    		var panel = Ext.create("Ext.grid.Panel",{
    			id:"myGrid",
    			renderTo : Ext.getBody(),
    			title : "订单列表",
    			height : 600,
    			width : 1300,
    			store : orderStore,
    			selModel:{selType:"checkboxmodel",checkOnly:true,mode:"MULTI"},
    			plugins:[{ptype:"cellediting",
    				listeners:{
						edit:function(edit,e){
							if(e.field == "customerID"){
    							var customerStore = Ext.StoreManager.lookup("CustomerStore");
    							var rec = customerStore.getRecorder(e.field,e.value);
    							e.record.set("customerName",rec.data.customerName);
    						}
    						if(e.field == "employeeID"){
    							var employeeStore = Ext.StoreManager.lookup("EmployeeStore");
    							var rec = employeeStore.getRecorder(e.field,e.value);
    							e.record.set("employeeName",rec.data.employeeName);
    						}
    						if(e.field == "shipVia"){
    							var shipperStore = Ext.StoreManager.lookup("ShipperStore");
    							var rec = shipperStore.getRecorder(e.field,e.value);
    							e.record.set("companyName",rec.data.companyName);
    						}
						}
					}
				}],    				
				tbar:{
					xtype:"pagingtoolbar",
					store:orderStore,
					items:[
						"|",
						{text:"增加",id:"add",disable:true,
							handler:function(){
								//增加记录的函数
								var grid = this.up("gridpanel");
								var edit = grid.plugins[0];
								var rec = new Order({
									orderID:"0",
    								customerName:"",
    								customerID:"",
    								employeeName:"",
    								employeeID:"",
    								orderDate:new Date(),
    								requiredDate:new Date(),
    								shippedDate:new Date(),
    								shipVia:"",
    								companyName:"",
    								freight:"0.00",
    								shipName:"",
    								shipAddress:"",
    								shipCity:"",
    								shipRegion:"",
    								shipPostalCode:"",
    								shipCountry:""
								});
								edit.cancelEdit();
								grid.store.insert(orderStore.getCount(),rec);
								edit.startEditByPosition({row:orderStore.getCount(),column:3});
							}
						},
						{text:"删除",id:"delete",disable:true,
							handler:function(){
								//删除记录的函数
								var grid=this.up("gridpanel");
								var rs=grid.getSelectionModel().getSelection();
								if(rs.length > 0){							
									var content="确定删除以下客户订单?</br>";
									for(var i=0;ln=rs.length,i<ln;i++){
										content+=rs[i].data.customerName+"<br/>";
									}
									Ext.Msg.confirm("删除记录",content,function(btn){
										if(btn=="yes"){
											this.store.remove(rs);
											this.store.sync();
										}
									},grid);
								}
							}
						},
						{text:"保存",
							handler:function(){
								//修改记录的函数
								this.up("gridpanel").store.sync();
							}
						}
					]
				},
				columns : [
    				//{xtype:"rownumberer",sortable:false,width:30,align:"center"},
    				{text : "订单编号", dataIndex : 'orderID',width:60,align:"center",
    					renderer:function(v){
    						return Ext.String.leftPad(v,6,"0");
    					}
    				},
    				{text : "客户名称", dataIndex : 'customerID',width:120,sortable:false,flex:1,
    					field:{xtype:"combobox",allowBlank:false,autoRender:true,
    						store:"customerStore",valuefield:"CustomerID",displayField:"CustomerName",
    						forceSelection:true,triggerAction:"all"
    					},
    					renderer:function(v,meta,rec){
    						var store = Ext.StoreManager.lookup("CustomerStore");
    						var rec = store.findRecord("CustomerID",rec.data.customerID);
    						return rec.data.CustomerName;
    					}
    				},
    				{text : "营业员", dataIndex : 'employeeID',width:80,sortable:false,
    					field:{xtype:"combobox",allowBlank:false,autoRender:true,
    						store:"employeeStore",valuefield:"EmployeeID",displayField:"EmployeeName",
    						forceSelection:true,triggerAction:"all"
    					},
    					renderer:function(v,meta,rec){
    						var store = Ext.StoreManager.lookup("EmployeeStore");
    						var rec = store.findRecord("EmployeeID",rec.data.employeeID);
    						return rec.data.EmployeeName;
    					}
    				},
    				{xtype:"datecolumn",text : "订购日期", dataIndex : 'orderDate',width:120,format:"Y年m月d日",editor: 'datefield'},
    				{xtype:"datecolumn",text : "预计到货日期", dataIndex : 'requiredDate',width:120,format:"Y年m月d日",editor: 'datefield'},
    				{xtype:"datecolumn",text : "发货日期", dataIndex : 'shippedDate',width:120,format:"Y年m月d日",editor: 'datefield'},
    				{text : "运货商", dataIndex : 'shipVia',width:80,sortable:false,
    					field:{xtype:"combobox",allowBlank:false,autoRender:true,
    						store:"shipperStore",valuefield:"shipperID",displayField:"companyName",
    						forceSelection:true,triggerAction:"all"
    					},
    					renderer:function(v,meta,rec){
    						var store = Ext.StoreManager.lookup("ShipperStore");
    						var rec = store.findRecord("shipperID",rec.data.shipVia);
    						return rec.data.companyName;
    					}
    				},
    				{xtype:"numbercolumn",text : "运费", dataIndex : 'freight',width:60,format:"¥0.00",editor: 'numberfield'},
    				{text : "收货人", dataIndex : 'shipName',width:60,editor: 'textfield'},
    				{text : "收货地址", dataIndex : 'shipAddress',width:120,editor: 'textfield'},
    				{text : "收货城市", dataIndex : 'shipCity',width:80,editor: 'textfield'},
    				{text : "收货地区", dataIndex : 'shipRegion',width:60,editor: 'textfield'},
    				{text : "邮政编码", dataIndex : 'shipPostalCode',width:90,editor: 'textfield'},
    				{text : "国家", dataIndex : 'shipCountry',width:60,editor: 'textfield'},
    			]
    		});
    	});
    </script>


点击单元格编辑时出现:
TypeError: store is undefined
store.on(listeners)

请求大神帮我看看是哪儿出问题了?
2013年12月26日 12:06
目前还没有答案

相关推荐

    ExtJs中Store加载(load)时候提示信息

    `beforeload`事件在`Store`开始加载数据之前触发。通过监听这个事件,可以在数据加载前展示一个等待消息。例如: ```javascript var msgTip; var reportStore = new Ext.data.Store({ proxy: reportProxy, reader...

    自我扩展FormPanel 和Store

    2. 数据感知:监听Store的数据变更事件,自动更新表单中的数据显示。 3. 自动绑定:通过在构造函数中设置`autoLoad`属性和`store`配置项,实现Store的数据自动加载到表单。 对于自我扩展的Store,我们同样创建一个...

    kaggle中rossmann store sales数据集

    Rossmann Store Sales数据集不仅是一个预测问题,同时也揭示了零售业背后的复杂动态,包括顾客行为、市场竞争、营销策略等。通过对这个数据集的深入分析,我们可以学习到如何运用统计学和机器学习技术解决实际商业...

    storebar extjs通过store实现toolbar

    3. 绑定`Store`到`Toolbar`:使用`bind`或`mon`方法监听`Store`的数据变更事件,当`Store`加载或更新数据时,动态生成并添加相应的组件到`Toolbar`的容器中。 ```javascript myStore.mon(myStore, 'load', function...

    C#Windows store 音乐播放器

    总的来说,开发"C# Windows Store 音乐播放器"需要掌握C#语言基础、Windows Store应用开发技术、多媒体处理、文件系统访问、图像处理、UI设计、事件处理、后台播放以及调试技巧等多个方面的知识。对于初学者来说,这...

    前端项目-store2.zip

    5. **事件监听**:为了实时响应 `localStorage` 的变化,`store2` 可能实现了事件监听机制,使得开发者可以在数据更新时执行相应的回调函数。 6. **兼容性处理**:考虑到跨浏览器兼容性问题,`store2` 可能已经处理...

    windows store app development

    《Windows Store App Development》这本书主要聚焦于使用C#和XAML技术进行Windows应用商店应用的开发。C#是一种广泛应用于Microsoft平台的面向对象的编程语言,而XAML(Extensible Application Markup Language)则...

    阿里云tablestore PHP版SDK

    11. **事件监听**:SDK还提供了监听器功能,可以在数据写入或更新时触发自定义的回调函数,方便进行业务逻辑处理。 12. **错误处理**:在开发过程中,需要正确处理可能出现的错误。SDK会抛出异常,可以通过try-...

    ProophEventStore一个事件源组件用于持久化事件消息

    `prooph-event-store-ebbc5d8`是ProophEventStore的一个具体版本,通常包含源代码、示例、文档以及配置文件等。开发者可以通过解压此压缩包,了解和学习ProophEventStore的内部实现,并将其集成到自己的项目中。 ...

    siddhi-store-rdbms_wso2_siddhi_源码

    描述提到“使用siddhi流式处理数据,支持mysql”,这表明Siddhi Store RDBMS是为了解决在MySQL这样的关系型数据库中存储和查询由Siddhi处理的实时数据流问题。Siddhi是一个强大的事件处理器,它能够对流入的数据进行...

    intel branch trace store

    在Intel处理器架构中,"Intel Branch Trace Store"(BTS)是一种硬件辅助的性能监控功能,它用于记录程序执行过程中的分支历史信息。这个技术主要目的是为了帮助软件开发者和性能分析人员理解程序的控制流,优化代码...

    store_schema.sql脚本

    5. **CREATE TRIGGER**:定义触发器,当特定事件(如INSERT、UPDATE、DELETE)发生时自动执行的代码。 6. **GRANT/REVOKE**:权限管理,分配或撤销用户对数据库对象的访问权限。 三、脚本应用 1. **数据库初始化**...

    extjsDemo(store grid form mvc模式等一些demo)

    在"extDemo"中,你可能会看到如何定义一个Store,配置它的模型(Model)以及数据源,以及如何监听数据变更事件。 接下来是"grid"。Grid是ExtJS中最常用的组件之一,用于显示二维数据,通常与Store配合使用。在"ext...

    前端开源库-ngrx-store-freeze

    Actions表示应用中的事件,Reducers是纯函数,负责根据action更新state,而Store则是全局状态的单一来源,可以被任何组件访问和订阅。 ### ngrx-store-freeze:确保状态不变性 `ngrx-store-freeze`是一个meta ...

    Ext中对于多种store数据分页实现示例

    在实际应用中,我们可能需要监听store的`load`事件,以便在分页时执行某些操作,如更新UI状态: ```javascript store.on('load', function(store, records, successful, operation, eOpts) { // 分页加载后执行...

    javascript高仿APP Store

    在“高仿APP Store”中,JavaScript将被用于处理用户交互,如点击事件、滚动加载更多应用、图标动画等。可能会用到`addEventListener`来绑定事件,`requestAnimationFrame`来实现平滑的动画效果,以及DOM操作(如`...

    Ext数据模型Store

    Store内部使用了`Ext.util.MixedCollection`数据结构,这使得它可以同时作为映射和列表来操作数据,并在数据变更时触发事件。Store通过与Proxy和DataReader的配合,能够处理来自不同源的数据。 Proxy是数据获取的...

    MusicStore作业

    可能还会涉及到流行的前端框架,如Bootstrap,用于快速创建响应式布局,或者jQuery,简化DOM操作和事件处理。 3. **后端技术**:后端可能使用ASP.NET或PHP等服务器端编程语言,处理HTTP请求,与数据库交互,实现...

    类似appstore的评分

    3. **处理触摸事件**: 添加手势识别器(Gesture Recognizer),当用户点击星星时,更新被选中的星星数,并可能触发相应的回调函数,以通知父视图或控制器用户的选择。 4. **自适应大小**: 重写`layoutSubviews()`...

    Swift iOS StoreKit 原生内购订阅代码封装,含Demo

    8. **处理订阅续订**:对于自动续订订阅,还需要处理续订事件。当用户的订阅状态发生变化时,StoreKit会发送`SKPaymentTransactionObserver`的`updatedTransactions`回调。 DYFStore库是封装了以上内购过程的一个...

Global site tag (gtag.js) - Google Analytics