ExtJs表格控件(一)

ExtJs表格由类Ext.grid.GridPanel定义,其xtype为grid。表格中列信息由columns定义,而表格的数据存储器由Ext.data.Store定义。

列的定义是一个JSON数组,这个JSON数字是整个表格列的模型必须首先定义,这个JSON数组中的每一个元素都是描述一列属性的,包含:显示文本(header)、列对应的记录集字段(dataIndex)、列的渲染函数(renderer)、宽度(width)以及格式化信息(format)。

下面看一个具体示例:

首先在JSP页面中引入EXT相关的资源,并且引入自己写的JS文件,并且在页面中个定义一个DIV,定义ID为grid。用于显示写成的表格。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP 'index.jsp' starting page</title>

<link rel="stylesheet" type="text/css"
	href="./extjs/resources/css/ext-all.css">
<script type="text/javascript" src="./extjs/ext-all.js"></script>
<script type="text/javascript" src="./extjs/ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="./script/table.js"></script>
</head>

<body>
	<div id="grid"></div>
</body>
</html>

然后看table.js,在这个JS文件中定义了columns和Store还有grid。

Ext.onReady(function() {

	//渲染函数
	var datarender = function(value){
		return "<span style='color:green;font-weight:bold;'>"+value+"</span>";
	};

	var columns = [ {
		header : '第一列',
		dataIndex : 'first',
		renderer:datarender
	}, {
		header : '第二列',
		dataIndex : 'second'
	}, {
		header : '第三列',
		dataIndex : 'third'
	}, {
		header : '第四列',
		dataIndex : 'four',
		format:'Y-m-d H:i:s',
		width:120
	} ];

	var store = new Ext.data.Store({
		proxy : {//获取数据的方式
			type : 'ajax',
			url : 'grid_StoreMsg',
			reader : {//解析数据方式
				type : 'json',
				root : 'model'//指定返回JSON中key
			}
		},
		fields : [ {
			name : 'first'
		}, {
			name : 'second'
		}, {
			name : 'third'
		}, {
			name : 'four'
		} ]
	});
	store.load();

	var grid = new Ext.grid.GridPanel({
		renderTo : 'grid',
		columns : columns,
		store : store
	});
});

这里使用Struts2对请求进行拦截,看Struts,xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="gridpackage" extends="json-default">
		<action name="grid_*" class="action.GridAction" method="{1}">
			<result type="json" name="success"></result>
			<result type="json" name="error"></result>
		</action>
	</package>
</struts>

这里需要返回值类型定义为JSON,所有package要集成自json-default。下面看具体的类。

为了方便数据传输,将表格中的每一行看成一个对象。将他信息封装成一个javabean。

package model;

public class Model {
	private String first;
	private String second;
	private String third;
	private String four;

	public Model(){

	}

	public Model(String first,String second,String third,String four){
		this.first = first;
		this.second = second;
		this.third = third;
		this.four = four;
	}

	public String getFirst() {
		return first;
	}
	public void setFirst(String first) {
		this.first = first;
	}
	public String getSecond() {
		return second;
	}
	public void setSecond(String second) {
		this.second = second;
	}
	public String getThird() {
		return third;
	}
	public void setThird(String third) {
		this.third = third;
	}
	public String getFour() {
		return four;
	}
	public void setFour(String four) {
		this.four = four;
	}
}

这里定义一个方法直接返回这个Model类的对象,在实际生产中需要经过处理后得到对象。

package service;

import model.Model;

public class Service {
	public Model modelMsg(){
		Model model = new Model();
		model.setFirst("第一行");
		model.setSecond("第二行");
		model.setThird("第三行");
		model.setFour("20150205 14:32:46");
		return model;
	}
}

下面看一个Action类

package action;

import service.Service;
import model.Model;

import com.opensymphony.xwork2.ActionSupport;

public class GridAction extends ActionSupport {
	private Model model;

	private Service service = new Service();

	public Model getModel() {
		return model;
	}
	public void setModel(Model model) {
		this.model = model;
	}

	public String StoreMsg(){
		model = service.modelMsg();
		return SUCCESS;
	}
}

应为Struts定义的类型为JSON,而且在配置文件中没有限制返回的字段,所有经过Action处理后将会把所有的属性封装成一个JSON对象返回。因此在Store的reader中需要指定root属性,方便解析。下面看一下firebug的显示,以及运行效果。

如果返回的数据是多条的话可以在Action中定义一个ArrayList对象,这个对象中存储的对象是需要返回的列的信息。同时将reader中的root值改为这个ArrayList对象名称即可。

时间: 2024-08-28 15:34:43

ExtJs表格控件(一)的相关文章

ExtJs表格控件(三)----单元格编辑与提交修改

ExtJs的EditorGrid控件提供了动态修改某个单元格的方法,首先如果要使用编辑插件,首先必须要在需要的列上添加editor属性,只有添加了editor属性的列才可以被编辑,否则无法编辑.同时我们可以在editor中添加一些限制或者约束条件,例如禁止编辑的单元格为空,首先在定义列的时候使用如下方法定义: var columns = [{ header : '第一列', dataIndex : 'first', renderer:datarender, editor:{ allowBlank

【ExtJs】表格控件Grid的增删改查,利用renderer让操作列actioncolumn使用文字而不是图标

在<[ExtJs]与后台数据库交互的带分页表格组件grid的查询>(点击打开链接)中介绍了Grid控件是怎么分页显示的.再加上对此控件内的数据的增加.删除.修改,就真的是大功告成了.此控件的排序,应该在后台的数据库查询语句中增加一条order by语句即可,前台的排序在分页之后,仅能对当前页进行排序,没有什么意义.下面举一个例子来说明,如果对ExtJs的表格控件Grid进行增删改查 一.基本目标 还是在数据库中有一张user表: 然后在网页中,如下图所示,通过增加.编辑.删除按钮能为这个表格控

深入浅出ExtJS 第三章 表格控件(未完)

1 3.1 表格的特性简介 2 >.Ext中的表格功能:包括排序/缓存/拖动/隐藏某一列/自动显示行号/列汇总/单元格编辑等实用功能; 3 >.表格由类Ext.grid.GridPanel定义,继承自Ext.Panel,其xtype为grid; 4 >.表格控件必须包含列(columns)定义信息,并指定表格的数据存储器(Ext.data.Store); 1 3.2 制作一个简单的表格 2 >1.列的定义是一个JSON数组,它是整个表格的列模型,应该首先创建; 3 var colu

ExtJS4.2学习(10)分组表格控件--GroupingGrid(转)

鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-17/179.html --------------------------------------------------------------------------------------------- 分组表格控件在我们的开发中经常被用到,GroupingGrid分组表格就是在普通表格的基础上,根据某一列的数据显示表格中的数据分组的表格控

最好的Angular2表格控件

最好的Angular2表格控件 现在市面上有大量的JavaScript数据表格控件,包括开源的第三方的和自产自销的.可以说Wijmo的Flexgrid是目前适应Angular 2的最好的表格控件. Angular 2数据表格基本要求: 更小.更快.更熟悉. 为了使用Angular 2表格,首先你需要了解表格的基本要求.FlexGrid开始于1996年,当时使用C++为Visual Basic编写的控件.多年来,它不断进化并在多个平台得到完善,尤其是JavaScript平台.FlexGrid 因为

javascript可编辑表格控件 支持全键盘操作

项目中经常会用到表格编辑控件,网上也有不少,但是确实没有完全符合我要求的, 自己写一个吧! 1.该控件支持 数据显示列,文本编辑列,选择列,下拉列,索引列,删除列 六种列类型 2.支持全键盘操作,自定义键位 包括:列焦点切换,行焦点切换,新建行,数据保存(默认 上,下,左,右 键操作) 3.丰富的事件,绝大多数的客户端操作都能触发无刷新后台事件 4.支持统计运算,可自定义运算插件 5.兼容 Ie,chorme,firefox等绝大多数主流浏览器 下载地址:http://files.cnblogs

能在多种前端框架下使用的表格控件

近几年Web前端框架特别流行,比如AngularJS.AngularJS 2.ReactJS.KnockoutJS.VueJS等.表格控件是我们在开发中经常要用到的控件.有没有能够在多种前端控件下都能使用的表格控件?最近研究发现Wijmo中的FlexGrid是一款不错的表格控件,它能支持很多主流的框架.这里主要介绍在纯JavaScript和AngularJS下FlexGrid的使用. 一.在纯JavaScript下使用FlexGrid HTML文件: <!DOCTYPE html> <h

Gridview表格控件

Gridview表格控件 效果图: 分析: 使用和ListvVew很像,都是经过适配器将数据绑定到控件上 具体步骤如下: 1.创建GridView控件,并指定列数 android:numColumns="3" 2.创建显示数据项的数据容器,是一个Lauout文件,里面一个ImageView,一个TextView 上面是ImageView,"小白10"是TextView显示的 3.创建好数据,这里用List来实现 private List<HashMap<

Silverlight项目笔记5:Oracle归档模式引起的异常&amp;&amp;表格控件绑定按钮

两个问题: (1)Oracle无法连接正常使用,原因是归档日志满了引起异常,最后选择删除归档日志恢复正常. (2)使用silverlight自带的表格绑定按钮竟然无法使用,通过变通绑定数据源集合,把按钮操作作为数据源集合一部分,重新绑定解决. 一.Oracle归档模式产生日志文件引起数据库异常 连接数据库失败,提示监听错误,各种检查监听配置文件,删除再添加监听,无果. sqlplus下重启数据库数据库依然无果,期间碰到多个错误提示: ORA-01034: ORACLE not available