ExtJS4 无限滚动表格

ExtJS4提供了无限滚动表格,就是通过滚动条来实现分页的表格,根据extjs自带的例子,实现了自己的无限分页表格,代码如下:

Ext.define('Gigi.view.user.List', {
	extend : 'Ext.grid.Panel',
	alias : 'widget.userlist',

	store : 'Users',

	width :900,
        height : 800,
        title : '用户管理',
	verticalScrollerType: 'paginggridscroller',
	invalidateScrollerOnRefresh : false,
	loadMask : true,
	disableSelection : false,
	dockedItems : [ {
		xtype : 'toolbar',
		items : [ {
			text : '新增',
			itemId : 'add'
		}, {
			text : '删除',
			itemId : 'delete'
		}, {
			text : '修改',
			itemId : 'update'
		} ]
	}],

	columns : [ {
		xtype : 'rownumberer',
		width : 30,
		align : 'left',
		sortable : false
	}, {
		header : '用户名',
		dataIndex : 'username',
		align : 'left',
		flex : 1
	}, {
		header : 'Email',
		dataIndex : 'email',
		flex : 1
	} ],

	initComponent : function() {
		this.callParent(arguments);
	}
});
上面的grid可以正常显示,拉动滚动条也能实现数据动态加载,但是上面的表格是指定大小的,不能自适应屏幕。为了自适应屏幕,去掉了grid中的width和height配置声明,并将grid嵌入到了Viewport中,代码如下:

Ext.create('Ext.container.Viewport', {
			layout : 'fit',
			items : [ {
				xtype : 'userlist'
			} ]
		});

表格也能正常显示,可是拉动滚动条却不能动态加载表格数据,表格内容始终保持不变。后来在grid中加入region : 'center'配置项,并将Viewport的layout改为border问题解决。最后代码如下:

Ext.define('Gigi.view.user.List', {
	extend : 'Ext.grid.Panel',
	alias : 'widget.userlist',

	store : 'Users',

	region : 'center',
	title : '用户管理',
	verticalScrollerType: 'paginggridscroller',
	invalidateScrollerOnRefresh : false,
	loadMask : true,
	disableSelection : false,
	dockedItems : [ {
		xtype : 'toolbar',
		items : [ {
			text : '新增',
			itemId : 'add'
		}, {
			text : '删除',
			itemId : 'delete'
		}, {
			text : '修改',
			itemId : 'update'
		} ]
	}],

	columns : [ {
		xtype : 'rownumberer',
		width : 30,
		align : 'left',
		sortable : false
	}, {
		header : '用户名',
		dataIndex : 'username',
		align : 'left',
		flex : 1
	}, {
		header : 'Email',
		dataIndex : 'email',
		flex : 1
	} ],

	initComponent : function() {
		this.callParent(arguments);
	}
});

	Ext.create('Ext.container.Viewport', {
			layout : 'border',
			items : [ {
				xtype : 'userlist'
			} ]
		});



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ExtJS2 中,要实现可编辑表格并在编辑时弹出窗口,你可以使用 GridPanel 的编辑插件(EditingGridPanel)和窗口组件(Window)的结合。 首先,你需要创建一个可编辑的 GridPanel,并为其指定一个编辑插件。然后,你可以在编辑事件中弹出一个窗口,让用户进行编辑操作。在窗口中进行的编辑完成后,将更新的数据保存到 GridPanel 中。 以下是一个示例代码,演示如何在 ExtJS2 中实现可编辑表格并弹出窗口进行编辑: ```javascript Ext.onReady(function() { // 创建数据模型 var store = new Ext.data.Store({ fields: ['name', 'email', 'phone'], data: [ { name: 'John Doe', email: 'john@example.com', phone: '123-456-7890' }, { name: 'Jane Smith', email: 'jane@example.com', phone: '987-654-3210' }, // ... ] }); // 创建列模型 var columnModel = new Ext.grid.ColumnModel({ columns: [ { header: 'Name', dataIndex: 'name', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: 'Email', dataIndex: 'email', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header: 'Phone', dataIndex: 'phone', editor: new Ext.grid.GridEditor(new Ext.form.TextField()) } ] }); // 创建 GridPanel var grid = new Ext.grid.EditorGridPanel({ store: store, cm: columnModel, renderTo: Ext.getBody(), clicksToEdit: 1, // 设置为 1,表示单击单元格即可进入编辑状态 plugins: [new Ext.ux.grid.RowEditor()], // 使用 RowEditor 插件 listeners: { afteredit: function(editor, changes, record, rowIndex) { // 单元格编辑完成后触发 var win = new Ext.Window({ title: 'Edit', layout: 'form', items: [ new Ext.form.TextField({ fieldLabel: 'Name', value: record.get('name') }), new Ext.form.TextField({ fieldLabel: 'Email', value: record.get('email') }), new Ext.form.TextField({ fieldLabel: 'Phone', value: record.get('phone') }) ], buttons: [{ text: 'Save', handler: function() { // 保存编辑后的数据 record.set('name', win.getComponent(0).getValue()); record.set('email', win.getComponent(1).getValue()); record.set('phone', win.getComponent(2).getValue()); win.close(); } }] }); win.show(); } } }); }); ``` 在上面的示例中,我们使用了 RowEditor 插件来实现行级别的编辑功能。在 afteredit 事件中,我们弹出了一个窗口,允许用户在窗口中进行编辑操作。在窗口中的 Save 按钮的事件处理程序中,我们将编辑后的数据保存到 GridPanel 中。 请注意,示例中使用了 Ext.form.TextField 来创建文本输入框,你可以根据实际需求使用其他表单组件。 希望这对你有帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值