由于jqGrid主要是用来处理和展现动态数据的,所以将创建一个Invoice 信息的数据库表,然后用jqGrid对其进行展现。
(注:原例子见jqGrid的官方wiki:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:first_grid,原例子服务器端是PHP的,我改成Jsp的了。)。
在MySql中创建表并插入一些数据。
表格列的说明:
- Invid - 发票key;
- invdate - 发票日期;
- amount - 数额;
- tax - 税率;
- total - 总额(包含税);
- note - 备注;
接着创建JSP页面,如下:
到这里前台的工作已经完成了。其实现在已经可以访问这个页面,在我的项目中他是index.jsp页面,所以访问的地址是:
http://localhost:8080/TestJqtable/(tomcat发布)如图:
可以看到此时表格已经显示出来只是没有数据,因为服务器端得代码还没有写。下面来完成服务器端的代码。
服务器端代码主要就是连接数据库读取invheader表格的数据,这和通常的基于java的web程序没有什么不同,我写了个ShowData类,该类是个表准的servlet在该类的doGet方法中进行数据读取。不过需要注意的是,servelet返回数据的格式。由于jqGrid可以处理多种格式的数据,如xml,json等,但默认情况下jqGrid接收xml格式的数据,这个例子里 datatype: 'xml', mtype: 'GET'这两设置说了jqGrid会用get请求去访问服务端,读取服务器端返回的xml格式的数据。默认的xml格式如下:
因此当servlet从数据库读取数据后需要将读取的数据按此格式进行拼装,然后将结果发送给jqGrid,jqGrid接收后将数据展现出来。
为了实习此功能,我将连接DataBase和装配xml文件的功能分成两个类DBUtil类负责连接数据库以javaBean(DataBean)的形式返回数据列表,CreateXml类,作用为以上述默认形式返回xml字符串,CreateXml调用DBUtil方法取得数据,最后ShowData类调用CreateXml的方法得到XML字符串,具体代码如下:
JavaBean:代表数据库表的一条记录的实体:
CreatXml:用于生成xml字串的类:
servlet: ShowData类
DBUtil类这里就不贴出了,因为每个人都有可能有不同的实现,只要最后能取得数据返回xml形式的字符串就可以了。
在我的项目里配置的servlet访问路径如下servlet/ShowData,请注意这个跟上面的jsp里的jqGrid的属性配置里的
url:'servlet/ShowData'是一致的,显然url这个属性就是jqGrid用来指定数据读取路径的。
现在再此访问http://localhost:8080/TestJqtable
可以看到如下画面:
可以看到jqGrid将分页功能也做好了,其实不止如此,jqGrid还可以有编辑数据,添加数据,删除数据,查询数据,等强大功能。