jQuery MiniUI

标题: Datagrid怎么服务端分页 [打印本页]

作者: wendys1127    时间: 2015-4-25 22:54:36     标题: Datagrid怎么服务端分页

怎么服务端分页,我是后台返回的数据,数据结构和控件需要的结构符合,但是为什么还是查询出所有??而不是按分页显示数据??
[attach]6072[/attach]

然后前台显示所有
[attach]6073[/attach]


(注:我是后台查询所有数据,然后处理成该控件数据结构的数据。。。不知道是不是这样,,求解,,,入门不太懂 这分页的实现。。。。)

作者: shmily4666    时间: 2015-4-25 23:17:49

        public Hashtable GetDepartmentEmployees(string departmentId, int index, int size)
        {
            string sql = "select * from t_employee where dept_id = '" + departmentId + "'";
            ArrayList dataAll = DBUtil.Select(sql);

            //实现一个内存分页(实际应该使用SQL分页)
            ArrayList data = new ArrayList();
            int start = index * size, end = start + size;

            for (int i = 0, l = dataAll.Count; i < l; i++)
            {
                Hashtable record = (Hashtable)dataAll[i];
                if (record == null) continue;
                if (start <= i && i < end)
                {
                    data.Add(record);
                }
            }

            Hashtable result = new Hashtable();
            result["data"] = data;
            result["total"] = dataAll.Count;

            return result;
        }


以上的代码是自带的参考

作者: wendys1127    时间: 2015-4-25 23:23:49

OK,自己解决。。。。这个分页的话,可能并不是客户端处理,后台只是提供 总数量(数据条数),分页还是依靠前台的 传参pageIndex和pageSize交给后台进行分页处理。。。。这正好符合我数据库分页的做法
作者: shmily4666    时间: 2015-4-26 21:41:11

    var grid = mini.get("datagrid1");

    // 分页填充细节处理
    function fillData(pageIndex, pageSize, dataResult, grid) {
        
        var data = dataResult.data, totalCount = dataResult.total;

        var arr = [];
        var start = pageIndex * pageSize, end = start + pageSize;
        for (var i = start, l = end; i < l; i++) {
            var record = data[i];
            if (!record) continue;
            arr.push(record);
        }
        

        grid.setTotalCount(totalCount);
        grid.setPageIndex(pageIndex);
        grid.setPageSize(pageSize);

        grid.setData(arr);
    }

    // 监听分页前事件,阻止后自行设置当前数据和分页信息
    grid.on("beforeload", function (e) {
        e.cancel = true;

        var pageIndex = e.data.pageIndex, pageSize = e.data.pageSize;
        fillData(pageIndex, pageSize, dataResult, grid);
    });

    ////////////////////////////////////////////////////////////////////////

    // 获取所有数据和总记录数 { total: 100, data: [...] }
    var dataResult = null;
    $.ajax({
        url: 'data.txt',
        dataType: 'text',
        async: false,
        success: function (text) {
            dataResult = mini.decode(text);
        }
    });

    // 第一次设置
    fillData(0, grid.getPageSize(), dataResult, grid);

=========================
以上为官方的客户端分面示例
作者: felt    时间: 2015-4-27 09:17:34

wendys1127 发表于 2015-4-25 23:23
OK,自己解决。。。。这个分页的话,可能并不是客户端处理,后台只是提供 总数量(数据条数),分页还是依 ...

默认是服务端分页,我们会传递pagerSize和pagerIndex到后台,后台返回对应的数据
具体的可以参考一下我们试用开发包内的后台方法




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2