日期:2014-05-18  浏览次数:20655 次

做过EXT的人进,关于grid的探讨与交流
本人刚学EXT不久,发觉用EXT做表格非常不错,所以静下心来研究下grid
我做了一个简单的表格,而且是连接数据库的 
大致思路是:
DB:user表(id,name,age)
在action中查出数据,随后放到List中,在以XML的形式跳到一个临时jsp中,
随后我在EXT中去得到这个jsp,把XML作为数据源,再用grid显示在页面中
代码如下:
在action中:
public ActionForward queryAll(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
{
List list = DAOFactory.getUserDAO().queryAll();
request.setAttribute( "list", list );

return mapping.findForward( "ds1" );
}
随后跳转到一个以XML形式存放数据的JSP:
<?xml version="1.0" encoding="UTF-8"?> <!--加上xml的头标签-->
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<%response.setContentType( "text/xml" );%> <!--一定要写这句,表示JSP是以xml形式显示-->
  <logic:present name="list" scope="request">
 
  <dataset> 
<logic:iterate id="user" name="list">
<row>
<id>${user.id }</id>
<name>${user.name }</name>
<age>${user.age }</age>
</row>
</logic:iterate>
  </dataset>
  </logic:present>

在EXT中:
<body>
<script>
Ext.onReady( init );


function init()
{
createTable1();
}

function createTable1()
{
var store=new Ext.data.Store({
url:"user.do?status=queryAll", //这里是跳到action中得到xml形式的数据源
reader:new Ext.data.XmlReader( {record:"row"},
["id","name","age"]
)
});
 
store.load();

var column=new Ext.grid.ColumnModel([ {header:"ID",dataIndex:"id",sortable:true},
{header:"姓名",dataIndex:"name"},
{header:"年龄",dataIndex:"age"}]);

var grid = new Ext.grid.GridPanel({
renderTo:"grid",
title:"User表",
height:200,
width:600, 
cm:column,
store:store,
autoExpandColumn:2
});
}

</script>

<div id="grid"></div> //最后把表格显示在页面中
</body>

这是我的大致思路,不过个人觉得比较复杂,望各位高手有没有其它办法做表格
我在网上看到还有什么record,JsonStore,但这些我不会
我现在想知道还有什么方法做表格
还请得到高手指点~
小弟在此谢过了





























------解决方案--------------------
这样太麻烦了!
你完全可以在action里组装xml,在用response.getWrite(xml)把数据返回给Ext,
注意return mapping.findForward( "ds1" ); ,要改为return null;

一般都用json格式的数据返回给Ext,网上有很多例子。去google!