`
y1d2y3xyz
  • 浏览: 252531 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ext表单之loadRecord用法详解

阅读更多


这个方法是BaseForm的一个公用方法,用法比较常用,之前没有想过要专门的去讲这么个方法的运用,但看到官方实例里面也有详细的讲这个方法的具体应用,而且我觉得是比较实用的方法!从BaseForm的角度出发,他一个是所有form组件的基类,实用他的这个方法同样可以用到其子类上,比如FormPanel,我这里就是通过FormPanel来实现这个功能的!
我整理是把grid里面的数据加载到form表单中相对应字段中去!
RowSelectionModel是表示行选择模式CellSelectionModel就表示单元格选择模式
由于前面也有涉及到grid相关知识,这里能理解就行,后面会做详细讲解,同时RowSelectionModel其相对的时间则有rowselect,表示选择当前行的动作!
重点是rowselect: function(sm, row, rec) {Ext.getCmp("user_info").getForm().loadRecord(rec);}这句代码sm是选择模式row是所列的唯一ID,比如第一条记录这个值就是0,以此递推!rec就表示本条记录


loadrecord.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>loadrecord.html</title>
		<link rel="stylesheet" type="text/css" href="../Ext/resources/css/ext-all.css" />
		<script type="text/javascript" src="../Ext/adapter/ext/ext-base.js"></script>
		<script type="text/javascript" src="../Ext/ext-all.js"></script>
		<script type="text/javascript" src="loadrecord.js"></script>
	</head>
	<body>
	</body>
</html>


loadrecord.js

Ext.onReady(function(){
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget="qtip";
	var data = [
				["1","男",new Date(1979,09,06),"tom",21,"you_5214@sina.com"],
				["2","女",new Date(1980,08,07),"tony",46,"you_5214@sina.com"],
				["3","男",new Date(1990,07,08),"Jet Li",31,"you_5214@sina.com"],
				["4","女",new Date(1910,06,09),"washington",29,"you_5214@sina.com"]
	];
	var fields = ['id','sex','brithday','name','age','eamil'];
	var cm = new Ext.grid.ColumnModel([
	    { header: "ID", width: 60, sortable: true,dataIndex :'id',
	    editor:new Ext.form.TextField({allowBlank:false})
	    },
	    { header: "性别", width: 70, sortable: true,dataIndex :'sex',
	    	editor:new Ext.form.ComboBox({
	    		editable:false,
	    		allowBlank:false,
	    		displayField:"sex",
	    		valueField:"sex",
	    		triggerAction:"all",
	    		mode:"local",
	    		store:new Ext.data.SimpleStore({
	    			fields:["sex"],
	    			data:[["男"],["女"]]
	    		})
	    	})
	    },
	    { header: "生日", width: 130, sortable: true,dataIndex :'brithday',
	    	editor:new Ext.form.DateField()
	    },
	    { header: "姓名", width: 100, sortable: true,dataIndex :'name'},
	    { header: "年龄", width: 100, sortable: true,dataIndex :'age',
	    	editor:new Ext.form.NumberField({
		    	allowBlank:false
		    })
	    },
	    { header: "Email", width: 120, sortable: true,dataIndex :'eamil',
	    	editor:new Ext.form.TextField({
		    	vtype:"email"
			})
	    }
	]);
	var store = new Ext.data.GroupingStore({
		data :data,
		reader : new Ext.data.ArrayReader({id:"id"},fields)
	});
	var gridForm = new Ext.FormPanel({
        id: 'user_info',
        applyTo:Ext.getBody(),
        frame: true,
        autoHeight:true,
        labelAlign: 'left',
        title: '员工信息表',
        bodyStyle:'padding:5px',
        width: 600,
        items:[new Ext.grid.GridPanel({
        	title:"人员信息列表",
					width:600,
					autoHeight:true,
					fram:true,
					cm:cm,
					store:store,
					sm:new Ext.grid.RowSelectionModel({
						singleSelect: true,
						listeners: {
                rowselect: function(sm, row, rec) {
                    Ext.getCmp("user_info").getForm().loadRecord(rec);
                }
            }
					}),
					view:new Ext.grid.GroupingView({
						hideGroupedColumn : true,
						showGroupsText :"分组显示",
						groupByText:"使用当前字段排序",
						forceFit :true,
						columnsText :"隐藏/显示字段",
						sortAscText:"升序排列",
						sortDescText:"降序排列"
					})
        }),{
        		xtype: 'fieldset',
            labelWidth: 150,
            title:'加载grid信息内容',
            defaultType: 'textfield',
            autoHeight: true,
            items:[{
            	fieldLabel: 'ID',
            	name :'id',
            	anchor : '55%'
            },{
            	fieldLabel: '性别',
            	name :'sex',
            	anchor : '55%'
            },{
            	fieldLabel: '生日',
            	name :'brithday',
            	anchor : '55%'
            },{
            	fieldLabel: '年龄',
            	name :'age',
            	anchor : '55%'
            },{
            	fieldLabel: '邮箱',
            	name :'eamil',
            	anchor : '55%'
            }]
        }]
	});
});



源代码也加上,编码是UTF-8
  • 大小: 51 KB
2
0
分享到:
评论
4 楼 轩辕丶菓菓 2011-10-24  
bushkarl 写道
那我后台用struts2,我的name一般是“对象.属性”形式的,不好用吖,蛋疼了!

很好用啊
3 楼 bushkarl 2011-03-27  
那我后台用struts2,我的name一般是“对象.属性”形式的,不好用吖,蛋疼了!
2 楼 y1d2y3xyz 2009-09-03  
wuzhen 写道
谢谢楼主分享,又学到知识了,它这个加载好像要name属性要对应上(我测试了下),否则加载对不上,不知道是不是这样理解?


你的理解是正确的!!
1 楼 wuzhen 2009-09-02  
谢谢楼主分享,又学到知识了,它这个加载好像要name属性要对应上(我测试了下),否则加载对不上,不知道是不是这样理解?

相关推荐

    简单的两种Extjs formpanel加载数据的方式

    formpanel数据源和grid相同,使用 Form.getForm().loadRecord(row);则数据便可自动加载在formpanel中对应的控件。2。formpanel数据源是单独的,则store传入到formpanel页面后,还需要手动将formpanel中的每个控件用...

    一个不错的翻页组件

    InstructsAction.loadRecord(currentPage,pageSize,ud,function(data){ thisObj.loadReply(data); } ); }; this.grid.create(); this.grid.setNumBar("gridTools");

    delphi7的例子(cxGrid/ini/文件上传)

    eg_LoadRecord_Improve_Original eg_LoadRZCheckTree_1 eg_LoadRZCheckTree_连带设置_2 eg_LoadRZCheckTree_双击用户设置_del eg_LoadTree_1 eg_ReadIni_独立数据模块 eg_test_ImportExcelToSQL_ComOBJ_2 eg_update_...

    基于twisted实现的智能dns系统smartdns.zip

    这棵树是用dict模拟出来的,这样需 要最优解的时候就不需要遍历所有调度配置,而是最多检索15次即可找到最优,即时间复杂度为O(15xy),具体实现参考IPPool的 LoadRecord和JoinIP两个方法。 有了初始化后的iphash数据...

Global site tag (gtag.js) - Google Analytics