標籤:style blog http io ar color os 使用 sp
最近在學習easyui的使用,在學到datagrid的時候遇到了一些問題,終於抽點時間整理了一下,分享出來,請各位前輩高手多多指教!
1、先來看看效果,二話不說,直觀!
2、easyui的datagrid的使用方法
在這裡,datagrid的使用我不做過多講解,俺畢竟是初學者,不敢班門弄斧。所以就簡單帶一下。
①、在easyui的layout中的center中定義一個table,id為"datagridTable"。
<div region="center" border="false"> <table id="datagridTable"></table> </div>
②、使用javascript的方式讓這個table變為一個easyui的datagrid。當然也可以給這個table指定class屬性為“easyui-datagrid”,兩種方式都可以,蘿蔔白菜,各有所愛。由於datagrid和背景資料互動打交道的比較多,所以俺使用的功能比較好控制的javascript方式定義。
代碼如下,其中具體的屬性和方法請查看easyui文檔,官網地址:http://www.jeasyui.com/documentation/datagrid.php,標紅的部分為後台struts處理的Url和顯示分頁工具列的設定。
<script type="text/javascript"> $(function() { $("#datagridTable").datagrid({ url : ‘getUsers‘, title : ‘使用者列表‘, pagination : true, pageSize : 10, pageList : [ 10, 20, 30, 40 ], fit : true,//自適應視窗大小變化 fitColumns : true, border : false, idField : ‘id‘, columns : [ [ { title : ‘使用者編號‘, field : ‘id‘, width : 100 //寬度必須,數值隨便 }, { title : ‘使用者名稱‘, field : ‘username‘, width : 100 }, { title : ‘使用者密碼‘, field : ‘password‘, width : 100 },{ title:‘註冊時間‘, field:‘date‘, width:100 } ] ], toolbar : [ { text : ‘增加‘, iconCls : ‘icon-add‘, handler : function() { } }, ‘-‘, { text : ‘刪除‘, iconCls : ‘icon-remove‘, handler : function() { } }, ‘-‘, { text : ‘編輯‘, iconCls : ‘icon-edit‘, handler : function() { } } ] //兩個[],實現多級表頭,合併儲存格的效果,產生不規則表頭 }); });
③、後台使用的是SSH(struts2+hibernate4+spring3.2),後台Action簡單寫了一下。
@Controller(value = "GetUserAction") @Scope("prototype") public class GetUserAction { //使用spring的annotation注入 @Resource(name = "userDao") private UserDao ud; //page和rows屬性,是easyui分頁工具的屬性,名字固定,便於struts2的自動封裝和類型裝換,可以通過Firebug看到。 private int page; private int rows; //省略的set/get方法 public String getUsers() { //存放資料的list List<User> users = new ArrayList<User>(); //這個User是後來做資料過濾的時候封裝的過濾條件。 User u =new User(); //使用spring的BeanUtils工具,複製屬性到u裡面。 BeanUtils.copyProperties(this, u); //背景getUsers方法,這裡我省略了service層,採用domain,action,dao,daoImpl架構,功能簡單,就沒加上service這一層。 users = (List<User>) ud.getUsers(page, rows, u); Map<String, Object> m = new HashMap<String, Object>(); //total是easyui分頁工具的總頁數。名字固定。 m.put("total", ud.getTotal(page, rows, u)); m.put("rows", users); //自己寫了一個java對象轉換成json的工具類,俺用的是jackson,使用json-lib的同學可以自己寫一個。不過jaon-lib的轉換速度比較慢,沒有jackson快。 JSONParser.writeJson(m); return "success"; } }
④、看一眼getUsers(int page,int rows,User u)和getTotal(int page,int rows,User u)方法
@Service("userDao") public class UserDaoImpl implements UserDao { //注入hibernate的sessionFactory,不多說。 @Resource(name = "sessionFactory") private SessionFactory sessionFactory; //過濾條件,動態拼接HQL語句。 public String addWhere(String hql, User u) { if (u.getUsername() != null && !u.getUsername().trim().equals("")) { hql += " where 1=1 and u.username like ‘%%" + u.getUsername() + "%%‘"; } return hql; }; //設定為唯讀事務 @Override @Transactional(readOnly = true) public List<?> getUsers(int page, int rows, User u) { String hql = "from User u "; hql = addWhere(hql, u); Query query = sessionFactory.getCurrentSession().createQuery(hql); //hibernate的分頁就依靠這兩個set方法,詳情請查看API文檔。 query.setFirstResult((page - 1) * rows); query.setMaxResults(rows); //將結果以list返回。 return query.list(); } //getTotal方法第一種寫法,使用HQL的count函數 @Override @Transactional(readOnly = true) public Long getTotal(int page, int rows, User u) { String hql=" select count(*) from User u"; hql=addWhere(hql, u); Query query = sessionFactory.getCurrentSession().createQuery(hql); //注意類型為Long。 return (Long) query.list().get(0); } /** //getTotal方法的第二種寫法,不使用HQL的count函數。 @Override @Transactional(readOnly = true) public List<?> getTotal(int page, int rows, User u) { //不適用count,查詢所有的,action通過ud.getUsers(page,rows,u).size()獲得total。效能較差,畢竟我只要一個 //count數值,hibernate卻list所有的之後在求size()。 String hql=" from User u"; hql=addWhere(hql, u); Query query = sessionFactory.getCurrentSession().createQuery(hql); return query.list(); } */ }
⑤、到此,後台功能開發完成,部署,運行即可。
page,rows,total參數解釋
寫下這篇文章,一是為了本著分享精神能與大家共同學習,探討和進步。二是為了記錄一下學習筆記,以備日後只需,查閱方便。不正確指出,望大家多多批評指正。(我的CSDN部落格也有這篇文。。(⊙o⊙))
後續我將把JSONParser的代碼分享一下,用於將list轉換成標準的json格式。
本文轉自:http://my.oschina.net/sgl/blog/123403
源碼:https://code.csdn.net/Sgl731524380/easyui-pagination
Easyui的datagrid結合hibernate實現資料分頁