ligerUI---ligerGrid分頁排序的使用(從后台獲取數據顯示)


寫在前面:

  最近項目的前框框架用的是ligerUI,里面用到了ligerGrid表格,下面就來說說從后台獲取數據並在前台頁面進行完美展示。啊哈哈哈。。(天啦,坐我旁邊的麗姐貌似炒股 一個月可以搞幾十萬,厲害厲害厲害了。。。。)

 

  1.前台頁面代碼:

 

            roleGrid = $("#roleGrid").ligerGrid(
                {
                    columns: [
                        {display: '角色編號', name: 'roleId', align: 'left', width: 100, minWidth: 60,},
                        {display: '角色名', name: 'roleName', minWidth: 120},//hide:'true'
                        {display: '角色描述', name: 'roleDes', minWidth: 120,},
                        {display: '角色類型編號', name: 'roleTypeId', minWidth: 120,},
                        {display: '角色類型', name: 'roleTypeName', minWidth: 120,},
                        {display: '創建者', name: 'creator', minWidth: 120,},
                        {display: '創建時間', name: 'cTime', minWidth: 120},
                        {display: '更新者', name: 'updator', minWidth: 120},
                        {display: '更新時間', name: 'uTime', minWidth: 120},
                        {display: '系統編號', name: 'systemId', minWidth: 120,},
                        {display: '系統名', name: 'systemName', minWidth: 120,},


                    ],

                    //這里請求之后的數據不用解析 自動生成表格  注意字段要相互對應
                    url: '${baseURL}/listAllRole.action',
                    //向后台提交的數據 根據systemId來進行排序
                    sortName: 'systemId',
                    //向后台提交的數據 排序方向為升序
                    sortorder:'asc',
                    //后台提交的數據 每頁顯示的記錄數
                    pageSize: 10,

                    //onSelectRow選擇行事件
                    onSelectRow: function (rowdata, rowindex, rowobj) {
                        //選中行事件。。。
                    },
                    checkbox: false,
                    height: '100%',
                    rownumbers: true
                });

 

  2.后台action代碼:

@Controller("RoleAction")
public class RoleAction extends ActionSupport {

    //注入業務層接口
    @Resource
    private RoleService roleService;

    public String roleId;
    public String roleName;
    public String roleDes;
    public String creator;
    public String updator;
    public String systemId;
    public String functionIds;
    public String cTime;
    public String roleTypeId;

    //分頁排序  接收對應的字段
    //這些都是前台向后台提交的數據 需要自己獲取
    public String page; //當前頁
    public String pagesize; //每頁大小
    public String sortname;  //排序字段
    public String sortorder; //升序還是降序

    //對返回的json數據提供get方法
    private JSONObject jsonObject;
    public JSONObject getJsonObject() {
        return jsonObject;
    }

    public String listAllRole(){

        try{
            //獲取所有的角色數據  分頁排序處理 將分頁排序的相關字段傳到dao層進行處理 這里不做多解釋
            List<Role> roleList = roleService.getAllByPage(Role.class,Integer.parseInt(page),Integer.parseInt(pagesize),sortname,sortorder);
            //獲取總記錄數
            Integer totalCount = roleService.getCount(Role.class);

            List<RoleVO> roleVOList = new ArrayList<>();
            //這里都是本項目中對數據的一些處理 可以不用細看  這里不重要
            for (int i = 0; i < roleList.size(); i++) {
                RoleVO roleVO = new RoleVO();
                roleVO.setRoleId(roleList.get(i).getRoleId());
                roleVO.setRoleName(roleList.get(i).getRoleName());
                roleVO.setRoleDes(roleList.get(i).getRoleDes());
                roleVO.setCreator(roleList.get(i).getCreator());
                roleVO.setUpdator(roleList.get(i).getUpdator());
                roleVO.setSystemId(roleList.get(i).getSystem().getSystemId());
                roleVO.setSystemName(roleList.get(i).getSystem().getSystemName());
                roleVO.setcTime(roleList.get(i).getcTime());
                roleVO.setuTime(roleList.get(i).getuTime());
                roleVO.setRoleTypeId(roleList.get(i).getRoleType().getRoleTypeId());
                roleVO.setRoleTypeName(roleList.get(i).getRoleType().getRoleTypeName());

                roleVOList.add(roleVO);
            }
            //因為對已ligerGrid 需要的json格式的數據要有Rows ,Total兩個字段 這里可以用map集合來做處理
            Map<String, Object> map = new HashMap<>();
            //Rows裝的是記錄數據集合
            map.put("Rows", roleVOList);
            //Rows裝的是總的記錄數
            map.put("Total", totalCount);

            //對數據做json格式轉換的處理
            JsonConfig jsonConfig = new JsonConfig();
            jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
            jsonObject = JSONObject.fromObject(map, jsonConfig);

            java.lang.System.out.println("jsonObject:" + jsonObject);
            //{"Total":5,"Rows":[{"cTime":"2017-10-24 00:00:00","creator":123,"roleDes":"測試測試","roleId":33,"roleName":"測試1","roleTypeId":2,"roleTypeName":"技術類型","systemId":1,"systemName":"USM","uTime":"2017-10-24 00:00:00","updator":123}]}
        }catch (Exception e){
            e.printStackTrace();
        }
        return SUCCESS;
    }
}

  其實分頁排序與我們平時寫的分頁排序沒有太大的區別 唯一的就是現在用了前端框架,要將這些相關的字段在后台進行接收 然后傳到dao層做處理

  千萬不要以為只要我后台action中的數據返回的格式是json格式,就可以在前台頁面中直接獲取到然后作顯示,那是不可能的。

  前台能接收后台的json格式的數據需要做以下處理:

  1.首先你的后台返回的json格式的數據要與你前台頁面ligerGrid進行顯示的字段內容相對應(ligerGrid的Rows與Total是在前台頁面進行數據展示需要的兩個字段,故后台也對應傳這兩個字段的json格式數據):如圖:

  

  2.配置struts2返回的結果集視圖 設置type=json(我這里用的是struts2的框架 故以struts2框架舉例)

<action name="listAll*" class="{1}Action" method="listAll{1}">
            <result type="json">
            
                <param name="root">jsonObject</param>
            </result>

</action>    

  3.設置對應action所在的package繼承自json-default

 <package name="fums" namespace="/" extends="struts-default,json-default">

  4.在后台action中將要返回的數據提供get方法

  5.在struts.xml中設置返回數據的格式(見第2步中的代碼,即設置的<param>部分,這里返回的json格式的數據的名字叫

jsonObject,所以對其進行數據源過濾


成功啦成功啦~~~~~~~~~~~~~~~~~~~~~~
然后也可以點擊上一頁下一頁進行分頁啦。。。。。截圖就不再展示了。。。。。

 

 

==========可愛滴分割線=============

后續所遇問題:

由於測試的時候發現了一個問題,首先我們在前台頁面指定按照systemId排序,每頁顯示pagesize為8,然后第一頁是可以正常顯示數據的,

但是當我們點擊下一頁進行切換的時候,問題就出來了,數據顯示不完整,如下圖,舉例說明:

在數據庫中的數據:

在頁面顯示的數據:

 

如果正常顯示的話,點擊下一頁,則頁面顯示的是數據庫中排序后的第二頁顯示數據,但是 現在 缺少了角色名為77的數據,並且角色名為aaa的數據重復了。

猜想是不是因為在前台點擊切換頁碼時,並沒有把排序字段發送到后台,(做了測試,在后台dao層里面直接寫死按照systemId排序,不接收來自前台頁面的

sortname字段數據,結果還是不行),經過測試,並不是因為因為排序字段的問題,猜想是不是點擊下一頁的時候調用的api是默認按照數據庫表主鍵進行排序的。

(不想去看api代碼了,就這樣吧,聽說ligerUI現在也沒有人進行維護了。。尷尬。。)問題待解決,目前只好沒有使用排序字段,直接采用默認的排序。

 
        

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM