ExtJS grid的dataIndex,store中的field,reader中的field

当一个对象的属性中包含了另一个对象,即外键,如:

public class Post implements java.io.Serializable {

	
	private String id;
	private String name;
	private String num;
	private Post parent;
	private Department department;
	private Role role;
	private Integer sort;
	private Integer delstate;
	private Integer children; // 0表示无子节点,1表示有子节点


Post 对象 ,含有department和role的外键对象,此时,grid中的dataIndex store中的field以及reader中的field怎么写呢

 

一:grid中的dataIndex

 

   var postGrid = new Ext.grid.GridPanel({
	sm : sm,
	loadMask : {
	  msg : '正在加载表格数据,请稍等...'
	},
	store : postStore,
	frame : true,
	columns : [sm,{
		header : 'id',
		id : 'id',
		dataIndex : 'id',
		hidden : true,
		sortable : false
	},{
		header : '岗位名称',
		dataIndex : 'name',
		width : 300,
		resizable : true
	},{
		header : '岗位编号',
		dataIndex : 'num',
		width : 150
	},{
		header : '所在部门',
		dataIndex : 'department.name',
		width : 100
	},{
		header : '所属职级',
		dataIndex : 'role.name',
		width : 150
	}],

这里只用写出对象中的属性即可,如果是含有对象外键,省去对象点,然后后面按照一般属性定义即可。

 

二:store中的field

	var postStore = new Ext.data.JsonStore({
		proxy : new Ext.data.HttpProxy({
			url : 'post_queryAllPost.action'
			}),
			root : 'item_Post',
			fields : ['id', 'name','num','department.name'
			          ,'role.name']
	});

	postStore.load();

这里跟grid中对象属性定义方法一样

 

三:reader中的field

当某一form需要加载reader

	var editChildrenForm = new Ext.form.FormPanel({
		reader : _jsonFormReader,

然后items定义如下

items: [{
	    xtype:'hidden',
	    name:'post.id',
	    id:'editNodeId'
		},{
            fieldLabel: '岗位名称',
            xtype : 'textfield',
            id:'editNodeName',
            name: 'post.name',
            anchor : '100%',
            allowBlank:false
        },{
            fieldLabel: '岗位编号',
            xtype : 'textfield',
            id:'editNodeNum',
            name: 'post.num',
            anchor : '100%',
            allowBlank:false
        },{
        	fieldLabel : '部门类型',
        	id:'editNodeRole',
			xtype : 'combo',
			store : roleStore,
			valueField : 'id',
			anchor : '100%',
			displayField : 'name',
			mode : 'local',	
			forceSelection : true,// 必须选择一项
			hiddenName : 'post.role.id',// hiddenName才是提交到后台的input的name
			editable : false,// 不允许输入
			triggerAction : 'all'							
        }],

而这些item中的值又要通过ognl传到后台作参数时,name中的属性必须加上对象点,也就是完整对象写法,然后下面最重要的是下面reader的mapping

	var _jsonFormReader = new Ext.data.JsonReader({
		root : 'item_Post'
	}, [{
				name : 'post.id',
				mapping : 'id'
			}, {
				name : 'post.name',
				mapping : 'name'
			}, {
				name : 'post.num',
				mapping : 'num'
			},{
				name : 'post.role.id',
				mapping : 'role.id'	
			},{
				name : 'post.role.name',
				mapping : 'role.name'	
			}]);


映射 的这个地方非常 特别,如果是给某一个 下拉框赋值,而这个下拉框本身又有值得时候 ,比如

				id :'updateDepartmentid',
				fieldLabel : '部门',
				xtype : 'combo',
				store : departmentStore,
				valueField : 'id',
				anchor : '98%',
				displayField : 'name',
				mode : 'local',
				forceSelection : true,// 必须选择一项
				hiddenName : 'user.department.id',// hiddenName才是提交到后台的input的name
				editable : false,// 不允许输入
				triggerAction : 'all',// 
				allowBlank : false// 该选项值不能为空
					name : 'b',
					mapping : 'department.id'	
				},{
					name : 'a',
					mapping : 'department.name'	

如果下拉框的id 与 映射中 b的值 相等,那么 下拉框赋值 为 id 所对应 在下拉框里记录中 相同 id 的 name 的值

如果下拉框的 id 与 映射中a 的值相等 ,那么下拉框赋值为 department.name的值





 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值